1 2006-06-01 Thomas Koenig <Thomas.Koenig@online.de>
4 * arith.c: Cast the characters from the strings to unsigned
5 char to avoid values less than 0 for extended ASCII.
7 2006-06-01 Per Bothner <bothner@bothner.com>
9 * data.c (gfc_assign_data_value): Handle USE_MAPPED_LOCATION.
10 * scanner.c (gfc_gobble_whitespace): Likewise.
12 2006-06-01 Paul Thomas <pault@gcc.gnu.org>
16 * interface.c (compare_parameter): Return 1 if the actual arg
17 is external and the formal is a procedure.
18 (compare_actual_formal): If the actual argument is a variable
19 and the formal a procedure, this an error. If a gsymbol exists
20 for a procedure of the same name, this is not yet resolved and
23 * trans-intrinsic.c (gfc_conv_associated): Make provision for
24 zero array length or zero string length contingent on presence
25 of target, for consistency with standard.
27 2006-05-30 Asher Langton <langton2@llnl.gov>
29 * symbol.c (check_conflict): Allow external, function, and
30 subroutine attributes with Cray pointees.
31 * trans-expr.c (gfc_conv_function_val): Translate Cray pointees
32 that point to procedures.
33 * gfortran.texi: Document new feature.
35 2006-05-29 Jerry DeLisle <jvdelisle@gcc.gnu.org>
38 * io.c (check_format): Add error for missing period in format
39 specifier unless -std=legacy.
40 * gfortran.texi: Add description of expanded namelist read and
41 missing period in format extensions.
43 2006-05-29 Francois-Xavier Coudert <coudert@clipper.ens.fr>
46 * trans-array.c (gfc_conv_array_ref): Perform out-of-bounds
47 checking for assumed-size arrrays for all but the last dimension.
49 2006-05-29 Francois-Xavier Coudert <coudert@clipper.ens.fr>
51 * invoke.texi: Change -fpackderived into -fpack-derived.
53 2006-05-29 Kazu Hirata <kazu@codesourcery.com>
55 * options.c, primary.c, resolve.c, trans-common.c: Fix typos
58 2006-05-28 Kazu Hirata <kazu@codesourcery.com>
60 * check.c, expr.c, resolve.c, trans-common.c,
61 trans-intrinsic.c, trans-stmt.c, trans-types.c: Fix comment typos.
63 2006-05-27 Francois-Xavier Coudert <coudert@clipper.ens.fr>
66 * trans-array.c (gfc_conv_array_ref): Don't perform out-of-bounds
67 checking for assumed-size arrrays.
69 2006-05-27 Paul Thomas <pault@gcc.gnu.org>
71 * trans-intrinsic.c (gfc_conv_associated): If pointer in first
72 arguments has zero array length of zero string length, return
75 2006-05-26 Francois-Xavier Coudert <coudert@clipper.ens.fr>
78 * trans-array.c (gfc_trans_dummy_array_bias): Don't use stride as
79 a temporary variable when -fbounds-check is enabled, since its
80 value will be needed later.
82 2006-05-26 Thomas Koenig <Thomas.Koenig@online.de>
85 * io.c (match_io): print (1,*) is an error.
87 2006-05-26 Paul Thomas <pault@gcc.gnu.org>
90 * resolve.c (find_array_spec): Add gfc_symbol, derived, and
91 use to track repeated component references.
95 * trans-intrinsic.c (gfc_conv_intrinsic_array_transfer): Use
96 se->string_length throughout and use memcpy to populate the
97 expression returned to the scalarizer.
98 (gfc_size_in_bytes): New function.
100 2006-05-21 Paul Thomas <pault@gcc.gnu.org>
103 * primary.c (gfc_match_rvalue): Test if symbol represents a
104 direct recursive function reference. Error if array valued,
105 go to function0 otherwise.
107 2006-05-21 Paul Thomas <pault@gcc.gnu.org>
110 * interface.c (gfc_extend_assign): Use new EXEC_ASSIGN_CALL.
111 * gfortran.h : Put EXEC_ASSIGN_CALL in enum.
112 * trans-stmt.c (gfc_conv_elemental_dependencies): New function.
113 (gfc_trans_call): Call it. Add new boolian argument to flag
114 need for dependency checking. Assert intent OUT and IN for arg1
116 (gfc_trans_forall_1): Use new code EXEC_ASSIGN_CALL.
117 trans-stmt.h : Modify prototype of gfc_trans_call.
118 trans.c (gfc_trans_code): Add call for EXEC_ASSIGN_CALL.
119 st.c (gfc_free_statement): Free actual for EXEC_ASSIGN_CALL.
120 * dependency.c (gfc_check_fncall_dependency): Don't check other
124 * resolve.c : Remove resolving_index_expr.
125 (entry_parameter): Remove.
126 (gfc_resolve_expr, resolve_charlen, resolve_fl_variable): Lift
127 calls to entry_parameter and references to resolving_index_expr.
130 * check.c (gfc_check_associated): Replace NULL assert with an
131 error message, since it is possible to generate bad code that
132 has us fall through to here..
135 * iresolve.c (maxloc, minloc): If DIM is not present, pass the
136 rank of ARRAY as the shape of the result. Otherwise, pass the
137 shape of ARRAY, less the dimension DIM.
138 (maxval, minval): The same, when DIM is present, otherwise no
141 2006-05-19 H.J. Lu <hongjiu.lu@intel.com>
144 * trans-array.c (gfc_conv_expr_descriptor): Don't zero the
145 first stride to indicate a temporary.
146 * trans-expr.c (gfc_conv_function_call): Likewise.
148 2006-05-18 Francois-Xavier Coudert <coudert@clipper.ens.fr>
149 Feng Wang <fengwang@nudt.edu.cn>
152 * dump-parse-tree.c (gfc_show_expr): Deal with Hollerith constants.
153 * data.c (create_character_intializer): Set from_H flag if character is
154 initialized by Hollerith constant.
156 2006-05-17 Francois-Xavier Coudert <coudert@clipper.ens.fr>
159 * resolve.c (resolve_call, resolve_function): Issue an error
160 if a function or subroutine call is recursive but the function or
161 subroutine wasn't declared as such.
163 2006-05-07 Francois-Xavier Coudert <coudert@clipper.ens.fr>
166 * gfortran.dg/recursive_check_1.f: New test.
169 2006-05-17 Francois-Xavier Coudert <coudert@clipper.ens.fr>
172 * dump-parse-tree.c (gfc_show_code_node): Try harder to find the
173 called procedure name.
175 2006-05-17 Jakub Jelinek <jakub@redhat.com>
178 * trans-openmp.c (gfc_trans_omp_parallel_do,
179 gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare): Set
180 OMP_PARALLEL_COMBINED flag.
182 2006-05-16 H.J. Lu <hongjiu.lu@intel.com>
185 * Make-lang.in (GFORTRAN_D_OBJS): Replace gcc.o with
188 2006-05-15 Paul Thomas <pault@gcc.gnu.org>
191 * resolve.c: Static resolving_index_expr initialized.
192 (entry_parameter): New function to emit errors for variables
193 that are not entry parameters.
194 (gfc_resolve_expr): Call entry_parameter, when resolving
195 variables, if the namespace has entries and resolving_index_expr
197 (resolve_charlen): Set resolving_index_expr before the call to
198 resolve_index_expr and reset it afterwards.
199 (resolve_fl_variable): The same before and after the call to
200 is_non_constant_shape_array, which ultimately makes a call to
204 * resolve.c (resolve_code): Add error condition that the return
205 expression must be scalar.
208 * matchexp.c (gfc_get_parentheses): New function.
209 (match_primary): Remove inline code and call above.
210 * gfortran.h: Provide prototype for gfc_get_parentheses.
211 * resolve.c (resolve_array_ref): Call the above, when start is a
212 derived type variable array reference.
214 2006-05-15 Jakub Jelinek <jakub@redhat.com>
217 * trans-openmp.c (gfc_trans_omp_array_reduction): Ensure
218 OMP_CLAUSE_REDUCTION_{INIT,MERGE} are set to BIND_EXPR.
220 2006-05-14 H.J. Lu <hongjiu.lu@intel.com>
222 * Make-lang.in (fortran/options.o): Depend on $(TARGET_H).
224 2006-05-11 Francois-Xavier Coudert <coudert@clipper.ens.fr>
227 * parse.c (next_free): Return instead of calling decode_statement
230 2005-05-10 Thomas Koenig <Thomas.Koenig@online.de>
233 * trans-array.c(gfc_array_allocate): If ref->next exists
234 that is if there is a statement like ALLOCATE(foo%bar(2)),
235 F95 rules require that bar should be a pointer.
237 2006-05-10 Francois-Xavier Coudert <coudert@clipper.ens.fr>
240 * resolve.c (gfc_resolve_index): Make REAL array indices a
241 GFC_STD_LEGACY feature.
243 2006-05-10 Francois-Xavier Coudert <coudert@clipper.ens.fr>
246 * parse.c (reject_statement): Clear gfc_new_block.
248 2006-05-09 Steven G. Kargl <kargls@comcast.net>
250 * invoke.texi: Missed file in previous commit. Update
251 description of -fall-intrinsics
253 2006-05-07 Steven Boscher <steven@gcc.gnu.org>
256 * parse.c (next_statement): Add check to avoid an ICE when
257 gfc_current_locus.lb is not set.
259 2006-05-07 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
262 * match.c (match_case_eos): Error out on garbage following
265 2006-05-07 Paul Thomas <pault@gcc.gnu.org>
268 * trans-array.c (get_array_ctor_strlen): Remove static attribute.
269 * trans.h: Add prototype for get_array_ctor_strlen.
270 * trans-intrinsic.c (gfc_conv_intrinsic_len): Switch on EXPR_ARRAY
271 and call get_array_ctor_strlen.
273 2006-05-05 Steven G. Kargl <kargls@comcast.net>
275 * invoke.texi: Update description of -fall-intrinsics
276 * options.c (gfc_post_options): Disable -Wnonstd-intrinsics if
277 -fall-intrinsics is used.
278 (gfc_handle_option): Permit -Wno-nonstd-intrinsics.
280 2006-05-04 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
282 * simplify.c (ascii_table): Fix wrong entry.
284 2006-05-02 Steven G. Kargl <kargls@comcast.net>
287 * lang.opt: Fix -Wtab description
290 * lang.opt: New flag -fall-intrinsics.
291 * invoke.texi: Document option.
292 * gfortran.h (options_t): New member flag_all_intrinsics.
293 * options.c (gfc_init_options, gfc_handle_option): Set new option.
294 sort nearby misplaced options.
295 * intrinsic.c (add_sym, make_generic, make_alias): Use it.
297 2006-05-02 Paul Thomas <pault@gcc.gnu.org>
300 * module.c: Add static flag in_load_equiv.
301 (mio_expr_ref): Return if no symtree and in_load_equiv.
302 (load_equiv): If any of the equivalence members have no symtree, free
303 the equivalence and the associated expressions.
306 * trans-common.c (gfc_trans_common): Invert the order of calls to
307 finish equivalences and gfc_commit_symbols.
309 2006-04-29 Francois-Xavier Coudert <coudert@clipper.ens.fr>
312 * simplify.c (simplify_len): Character variables with constant
313 length can be simplified.
315 2006-04-29 H.J. Lu <hongjiu.lu@intel.com>
318 * trans-array.c (gfc_conv_array_transpose): Move gcc_assert
319 before gfc_conv_expr_descriptor.
321 2006-04-23 Paul Thomas <pault@gcc.gnu.org>
324 * resolve.c (resolve_call): Check conformity of elemental
325 subroutine actual arguments.
327 2006-04-22 Jakub Jelinek <jakub@redhat.com>
330 * iresolve.c (gfc_resolve_reshape): Use reshape_r16 for real(16).
331 (gfc_resolve_transpose): Use transpose_r16 for real(16).
333 2006-04-21 Paul Thomas <pault@gcc.gnu.org>
336 * resolve.c (resolve_function): Remove general restriction on auto
337 character length function interfaces.
338 (gfc_resolve_uops): Check restrictions on defined operator
340 (resolve_types): Call the check for defined operators.
343 * trans-array.c (gfc_trans_array_constructor_subarray): Remove
344 redundant gfc_todo_error.
345 (get_array_ctor_var_strlen): Remove typo in enum.
347 2006-04-18 Bernhard Fischer <aldot@gcc.gnu.org>
349 * parse.c (next_free): Use consistent error string between
350 free-form and fixed-form for illegal statement label of zero.
351 (next_fixed): Use consistent warning string between free-form
352 and fixed-form for statement labels for empty statements.
354 2006-04-18 Steve Ellcey <sje@cup.hp.com>
356 * trans-io.c (gfc_build_io_library_fndecls): Align pad.
358 2006-04-16 Thomas Koenig <Thomas.Koenig@online.de>
361 * trans-array.c(gfc_array_init_size): Introduce or_expr
362 which is true if the size along any dimension
363 is negative. Create a temporary variable with base
364 name size. If or_expr is true, set the temporary to 0,
365 to the normal size otherwise.
367 2006-04-16 Paul Thomas <pault@gcc.gnu.org>
370 * intrinsic.c (add_functions): Mark LOGICAL as elemental.
373 * expr.c (gfc_check_assign): Extend scope of error to include
374 assignments to a procedure in the main program or, from a
375 module or internal procedure that is not that represented by
376 the lhs symbol. Use VARIABLE rather than l-value in message.
379 * trans-array.c (gfc_trans_deferred_array): If the backend_decl
380 is not a descriptor, dereference and then test and use the type.
383 * trans-decl.c (gfc_trans_deferred_vars): Check if an array
384 result, is also automatic character length. If so, process
385 the character length.
390 * trans_intrinsic.c (gfc_walk_intrinsic_bound): Set
391 data.info.dimen for bound intrinsics.
392 * trans_array.c (gfc_conv_ss_startstride): Pick out LBOUND and
393 UBOUND intrinsics and supply their shape information to the ss
397 * trans_expr.c (gfc_trans_function_call): Add a new block, post,
398 in to which all the argument post blocks are put. Add this block
399 to se->pre after a byref call or to se->post, otherwise.
401 2006-04-14 Roger Sayle <roger@eyesopen.com>
403 * trans-io.c (set_string): Use fold_build2 and build_int_cst instead
404 of build2 and convert to construct "x < 0" rather than "x <= -1".
406 2006-04-13 Richard Henderson <rth@redhat.com>
408 * trans-openmp.c (gfc_trans_omp_sections): Adjust for changed
409 number of operands to OMP_SECTIONS.
411 2006-04-08 Kazu Hirata <kazu@codesourcery.com>
413 * gfortran.texi: Fix typos. Follow spelling conventions.
414 * resolve.c, trans-expr.c, trans-stmt.c: Fix comment typos.
415 Follow spelling conventions.
417 2006-04-05 Roger Sayle <roger@eyesopen.com>
419 * dependency.c (get_no_elements): Delete function.
420 (get_deps): Delete function.
421 (transform_sections): Delete function.
422 (gfc_check_section_vs_section): Significant rewrite.
424 2006-04-04 H.J. Lu <hongjiu.lu@intel.com>
427 * trans-array.c (gfc_conv_expr_descriptor): Only dereference
428 character pointer when copying temporary.
431 * trans-array.c (gfc_conv_expr_descriptor): Properly copy
432 temporary character with non constant size.
434 2006-04-03 Paul Thomas <pault@gcc.gnu.org>
437 * trans.h: Prototype for gfc_conv_missing_dummy.
438 * trans-expr (gfc_conv_missing_dummy): New function
439 (gfc_conv_function_call): Call it and tidy up some of the code.
440 * trans-intrinsic (gfc_conv_intrinsic_function_args): The same.
443 * array.c (gfc_array_dimen_size): If available, return shape[dimen].
444 * resolve.c (resolve_function): If available, use the argument
445 shape for the function expression.
446 * iresolve.c (gfc_resolve_transfer): Set shape[0] = size.
448 2006-04-02 Erik Edelmann <eedelman@gcc.gnu.org>
450 * trans-array.c (gfc_trans_dealloc_allocated): Take a
451 tree representation of the array to be deallocated as argument
452 instead of its gfc_symbol.
453 (gfc_trans_deferred_array): Update call to
454 gfc_trans_dealloc_allocated.
455 * trans-array.h (gfc_trans_dealloc_allocated): Update
457 * trans-expr.c (gfc_conv_function_call): Update call to
458 gfc_trans_dealloc_allocated, get indirect reference to dummy
461 2006-04-01 Roger Sayle <roger@eyesopen.com>
464 * trans-array.c (gfc_trans_allocate_array_storage): In array index
465 calculations use gfc_index_zero_node and gfc_index_one_node instead
466 of integer_zero_node and integer_one_node respectively.
467 (gfc_conv_array_transpose): Likewise.
468 (gfc_conv_ss_startstride): Likewise.
469 (gfc_trans_dummy_array_bias): Likewise.
471 2006-04-01 Roger Sayle <roger@eyesopen.com>
473 * dependency.c (gfc_is_inside_range): Delete.
474 (gfc_check_element_vs_section): Significant rewrite.
476 2006-04-01 Roger Sayle <roger@eyesopen.com>
478 * dependency.c (gfc_dep_compare_expr): Strip parentheses and unary
479 plus operators when comparing expressions. Handle comparisons of
480 the form "X+C vs. X", "X vs. X+C", "X-C vs. X" and "X vs. X-C" where
481 C is an integer constant. Handle comparisons of the form "P+Q vs.
482 R+S" and "P-Q vs. R-S". Handle comparisons of integral extensions
483 specially (increasing functions) so extend(A) > extend(B), when A>B.
484 (gfc_check_element_vs_element): Move test later, so that we ignore
485 the fact that "A < B" or "A > B" when A or B contains a forall index.
487 2006-03-31 Asher Langton <langton2@llnl.gov>
490 * expr.c (gfc_check_assign): Allow cray pointee to be assumes-size.
492 2006-03-30 Paul Thomas <paulthomas2@wanadoo.fr>
493 Bud Davis <bdavis9659@sbcglobal.net>
496 * module.c (load_needed): Traverse entire tree before returning.
498 2006-03-30 Roger Sayle <roger@eyesopen.com>
501 * trans.c (gfc_trans_runtime_check): Promote the arguments of
502 __builtin_expect to the correct types, and the result back to
505 2006-03-29 Carlos O'Donell <carlos@codesourcery.com>
507 * Make-lang.in: Rename docdir to gcc_docdir.
509 2006-03-28 Steven G. Kargl <kargls@comcast.net>
511 * intrinsic.texi: s/floor/float in previous commit.
513 2006-03-28 Paul Thomas <pault@gcc.gnu.org>
516 * resolve.c (resolve_fl_procedure): Do not check the access of
517 derived types for internal procedures.
519 2006-03-27 Jakub Jelinek <jakub@redhat.com>
521 * io.c (check_io_constraints): Don't look at
522 dt->advance->value.charater.string, unless it is a CHARACTER
525 * f95-lang.c (gfc_get_alias_set): New function.
526 (LANG_HOOKS_GET_ALIAS_SET): Define.
528 2006-03-25 Steven G. Kargl <kargls@comcast.net>
531 * intrinsic.c (add_functions): Allow FLOAT to accept all integer kinds.
532 * intrinsic.texi: Document FLOAT.
534 2006-03-25 Thomas Koenig <Thomas.Koenig@online.de>
537 * iresolve.c (gfc_resolve_reshape): Remove doubling of
538 kind for complex. For real(kind=10), call reshape_r10.
539 (gfc_resolve_transpose): For real(kind=10), call
542 2006-03-25 Roger Sayle <roger@eyesopen.com>
544 * dependency.c (gfc_check_dependency): Improve handling of pointers;
545 Two variables of different types can't have a dependency, and two
546 variables with the same symbol are equal, even if pointers.
548 2006-03-24 Roger Sayle <roger@eyesopen.com>
550 * gfortran.h (gfc_symbol): Add a new "forall_index" bit field.
551 * match.c (match_forall_iterator): Set forall_index field on
552 the iteration variable's symbol.
553 * dependency.c (contains_forall_index_p): New function to
554 traverse a gfc_expr to check whether it contains a variable
555 with forall_index set in it's symbol.
556 (gfc_check_element_vs_element): Return GFC_DEP_EQUAL for scalar
557 constant expressions that don't variables used as FORALL indices.
559 2006-03-22 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
562 * error.c (gfc_fatal_error): Return ICE_EXIT_CODE instead of 4.
564 2006-03-22 Thomas Koenig <Thomas.Koenig@online.de>
567 * gfortran.h (gfc_option_t): Add record_marker.
568 * lang.opt: Add -frecord-marker=4 and -frecord-marker=8.
569 * trans-decl.c: Add gfor_fndecl_set_record_marker.
570 (gfc_build_builtin_function_decls): Set
571 gfor_fndecl_set_record_marker.
572 (gfc_generate_function_code): If we are in the main program
573 and -frecord-marker was provided, call set_record_marker.
574 * options.c (gfc_handle_option): Add handling for
575 -frecord-marker=4 and -frecord-marker=8.
576 * invoke.texi: Document -frecord-marker.
578 2006-03-22 Paul Thomas <pault@gcc.gnu.org>
581 * trans-intrinsic.c (gfc_conv_intrinsic_array_transfer): New
582 function to implement array valued TRANSFER intrinsic.
583 (gfc_conv_intrinsic_function): Call the new function if TRANSFER
585 (gfc_walk_intrinsic_function): Treat TRANSFER as one of the
586 special cases by calling gfc_walk_intrinsic_libfunc directly.
588 2006-03-21 Toon Moene <toon@moene.indiv.nluug.nl>
590 * options.c (gfc_init_options): Initialize
591 flag_argument_noalias to 3.
593 2006-03-20 Thomas Koenig <Thomas.Koenig@online.de>
596 * iresolve.c (gfc_resolve_maxloc): If mask is scalar,
597 prefix the function name with an "s". If the mask is scalar
598 or if its kind is smaller than gfc_default_logical_kind,
599 coerce it to default kind.
600 (gfc_resolve_maxval): Likewise.
601 (gfc_resolve_minloc): Likewise.
602 (gfc_resolve_minval): Likewise.
603 (gfc_resolve_product): Likewise.
604 (gfc_resolve_sum): Likewise.
606 2006-03-19 Paul Thomas <pault@gcc.gnu.org>
609 *expr.c (external_spec_function): Permit elemental functions.
612 *interface.c (compare_actual_formal): Detect call for procedure
613 usage and require rank checking, in this case, for assumed shape
614 and deferred shape arrays.
615 (gfc_procedure_use): Revert to pre-PR25070 call to
616 compare_actual_formal that does not require rank checking..
618 2006-03-16 Roger Sayle <roger@eyesopen.com>
620 * gfortran.h (gfc_equiv_info): Add length field.
621 * trans-common.c (copy_equiv_list_to_ns): Set the length field.
622 * dependency.c (gfc_are_equivalenced_arrays): Use both the offset
623 and length fields to determine whether the two equivalenced symbols
626 2006-03-14 Jerry DeLisle <jvdelisle@gcc.gnu.org>
629 * gfortran.h: Add warn_ampersand.
630 * invoke.texi: Add documentation for new option.
631 * lang.opt: Add Wampersand.
632 * options.c (gfc_init_options): Initialize warn_ampersand.
633 (gfc_post_options): Set the warn if pedantic.
634 (set_Wall): Set warn_ampersand.
635 (gfc_handle_option: Add Wampersand for itself, -std=f95, and -std=f2003.
636 * scanner.c (gfc_next_char_literal): Add test for missing '&' in
637 continued character constant and give warning if missing.
639 2006-03-14 Steven G. Kargl <kargls@comcast.net>
642 * gfortran.h: Wrap Copyright line.
643 (gfc_option_t): add warn_tabs member.
644 * lang.opt: Update Coyright year. Add the Wtabs.
645 * invoke.texi: Document -Wtabs.
646 * scanner.c (gfc_gobble_whitespace): Use warn_tabs. Add linenum to
647 suppress multiple warnings.
648 (load_line): Use warn_tabs. Add linenum, current_line, seen_comment
649 to suppress multiple warnings.
650 * options.c (gfc_init_options): Initialize warn_tabs.
651 (set_Wall): set warn_tabs for -Wall.
652 (gfc_post_options): Adjust flag_tabs depending on -pedantic.
653 (gfc_handle_option): Process command-line option -W[no-]tabs
655 2006-03-13 Paul Thomas <pault@gcc.gnu.org>
658 * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): Set the initial position to zero and
659 modify the condition for updating it, to implement the F2003 requirement for all(mask)
662 2006-03-13 Jakub Jelinek <jakub@redhat.com>
664 * trans-openmp.c (gfc_trans_omp_variable): Handle references
666 * trans-expr.c (gfc_conv_variable): Remove useless setting
667 of parent_flag, formatting.
669 * trans-decl.c (gfc_get_fake_result_decl): Re-add setting of
670 GFC_DECL_RESULT flag.
672 2003-03-11 Roger Sayle <roger@eyesopen.com>
674 * dependency.c (gfc_dep_compare_expr) <EXPR_OP>: Allow unary and
675 binary operators to compare equal if their operands are equal.
676 <EXPR_FUNCTION>: Allow "constant" intrinsic conversion functions
677 to compare equal, if their operands are equal.
679 2006-03-11 Erik Edelmann <eedelman@gcc.gnu.org>
681 * symbol.c (check_conflict): Allow allocatable function results,
682 except for elemental functions.
683 * trans-array.c (gfc_trans_allocate_temp_array): Rename to ...
684 (gfc_trans_create_temp_array): ... this, and add new argument
686 (gfc_trans_array_constructor, gfc_conv_loop_setup): Update call
687 to gfc_trans_allocate_temp_array.
688 * trans-array.h (gfc_trans_allocate_temp_array): Update prototype.
689 * trans-expr.c (gfc_conv_function_call): Use new arg of
690 gfc_trans_create_temp_array avoid pre-allocation of temporary
691 result variables of pointer AND allocatable functions.
692 (gfc_trans_arrayfunc_assign): Return NULL for allocatable
694 * resolve.c (resolve_symbol): Copy value of 'allocatable' attribute
695 from sym->result to sym.
697 2006-03-09 Erik Edelmann <eedelman@gcc.gnu.org>
699 * trans-expr.c (gfc_add_interface_mapping): Copy 'allocatable'
700 attribute from sym to new_sym. Call build_fold_indirect_ref()
701 for allocatable arguments.
703 2006-03-09 Paul Thomas <pault@gcc.gnu.org>
706 * trans-array.c (gfc_conv_expr_descriptor): Exclude calculation of
707 the offset and data when se->data_not_needed is set.
708 * trans.h: Include the data_not_need bit in gfc_se.
709 * trans-intrinsic.c (gfc_conv_intrinsic_size): Set it for SIZE.
711 2006-03-06 Paul Thomas <pault@gcc.gnu.org>
712 Erik Edelmann <eedelman@gcc.gnu.org>
714 * trans-array.c (gfc_trans_dealloc_allocated): New function.
715 (gfc_trans_deferred_array): Use it, instead of inline code.
716 * trans-array.h: Prototype for gfc_trans_dealloc_allocated().
717 * trans-expr.c (gfc_conv_function_call): Deallocate allocated
718 ALLOCATABLE, INTENT(OUT) arguments upon procedure entry.
720 2006-03-06 Paul Thomas <pault@gcc.gnu.org>
723 * resolve.c (resolve_function): Add name after test for pureness.
726 * trans-expr.c (gfc_conv_variable): Detect reference to parent result,
727 store current_function_decl, replace with parent, whilst calls are
728 made to gfc_get_fake_result_decl, and restore afterwards. Signal this
729 to gfc_get_fake_result_decl with a new argument, parent_flag.
730 * trans-stmt.c (gfc_trans_return): gfc_get_fake_result_decl 2nd arg
732 * trans.h: Add parent_flag to gfc_get_fake_result_decl prototype.
733 * trans-decl.c (gfc_get_fake_result_decl): On parent_flag, being set,
734 add decl to parent function. Replace refs to current_fake_result_decl
735 with refs to this_result_decl.
736 (gfc_generate_function_code): Null parent_fake_result_decl before the
737 translation of code for contained procedures. Set parent_flag to zero
738 in call to gfc_get_fake_result_decl.
739 * trans-intrinsic.c (gfc_conv_intrinsic_len): The same.
741 2006-03-05 Steven G. Kargl <kargls@comcast.net>
743 * simplify.c (gfc_simplify_verify): Fix return when SET=''.
745 2006-03-05 Erik Edelmann <eedelman@gcc.gnu.org>
748 * symbol.c (conf_std): New macro.
749 (check_conflict): Use it to allow ALLOCATABLE dummy
751 * trans-expr.c (gfc_conv_function_call): Pass the
752 address of the array descriptor when dummy argument is
754 * interface.c (compare_allocatable): New function.
755 (compare_actual_formal): Use it.
756 * resolve.c (resolve_deallocate_expr,
757 resolve_allocate_expr): Check that INTENT(IN) variables
758 aren't (de)allocated.
759 * gfortran.texi (Fortran 2003 status): List ALLOCATABLE
760 dummy arguments as supported.
762 2006-03-03 Roger Sayle <roger@eyesopen.com>
764 * dependency.c (gfc_check_element_vs_element): Revert last change.
766 2006-03-03 Roger Sayle <roger@eyesopen.com>
768 * dependency.c (gfc_check_element_vs_element): Consider two
769 unordered scalar subscripts as (potentially) equal.
771 2006-03-03 Roger Sayle <roger@eyesopen.com>
773 * dependency.c (gfc_check_dependency): Call gfc_dep_resolver to
774 check whether two array references have a dependency.
775 (gfc_check_element_vs_element): Assume lref and rref must be
776 REF_ARRAYs. If gfc_dep_compare_expr returns -2, assume these
777 references could potentially overlap.
778 (gfc_dep_resolver): Whitespace and comment tweaks. Assume a
779 dependency if the references have different depths. Rewrite
780 final term to clarrify we only have a dependency for overlaps.
782 2006-03-03 Thomas Koenig <Thomas.Koenig@online.de>
785 * trans-array.h: Adjust gfc_array_allocate prototype.
786 * trans-array.c (gfc_array_allocate): Change type of
787 gfc_array_allocatate to bool. Function returns true if
788 it operates on an array. Change second argument to gfc_expr.
789 Find last reference in chain.
790 If the function operates on an allocatable array, emit call to
791 allocate_array() or allocate64_array().
792 * trans-stmt.c (gfc_trans_allocate): Code to follow to last
793 reference has been moved to gfc_array_allocate.
794 * trans.h: Add declaration for gfor_fndecl_allocate_array and
795 gfor_fndecl_allocate64_array.
796 (gfc_build_builtin_function_decls): Add gfor_fndecl_allocate_array
797 and gfor_fndecl_allocate64_array.
799 2006-03-01 Roger Sayle <roger@eyesopen.com>
801 * trans-stmt.c (generate_loop_for_temp_to_lhs): Add an additional
802 INVERT argument to invert the sense of the WHEREMASK argument.
803 Remove unneeded code to AND together a list of masks.
804 (generate_loop_for_rhs_to_temp): Likewise.
805 (gfc_trans_assign_need_temp): Likewise.
806 (gfc_trans_forall_1): Likewise.
807 (gfc_evaluate_where_mask): Likewise, add a new INVERT argument
808 to specify the sense of the MASK argument.
809 (gfc_trans_where_assign): Likewise.
810 (gfc_trans_where_2): Likewise. Restructure code that decides
811 whether we need to allocate zero, one or two temporary masks.
812 If this is a top-level WHERE (i.e. the incoming MASK is NULL),
813 we only need to allocate at most one temporary mask, and can
814 invert it's sense to provide the complementary pending execution
815 mask. Only calculate the size of the required temporary arrays
817 (gfc_trans_where): Update call to gfc_trans_where_2.
819 2006-03-01 Paul Thomas <pault@gcc.gnu.org>
821 * iresolve.c (gfc_resolve_dot_product): Remove any difference in
822 treatment of logical types.
823 * trans-intrinsic.c (gfc_conv_intrinsic_dot_product): New function.
826 * trans-decl.c (gfc_get_symbol_decl): Extend condition that symbols
827 must be referenced to include unreferenced symbols in an interface
831 * trans-array.c (gfc_conv_resolve_dependencies): Add call to
832 gfc_are_equivalenced_arrays.
833 * symbol.c (gfc_free_equiv_infos, gfc_free_equiv_lists): New
834 functions. (gfc_free_namespace): Call them.
835 * trans-common.c (copy_equiv_list_to_ns): New function.
836 (add_equivalences): Call it.
837 * gfortran.h: Add equiv_lists to gfc_namespace and define
838 gfc_equiv_list and gfc_equiv_info.
839 * dependency.c (gfc_are_equivalenced_arrays): New function.
840 (gfc_check_dependency): Call it.
841 * dependency.h: Prototype for gfc_are_equivalenced_arrays.
843 2006-03-01 Roger Sayle <roger@eyesopen.com>
845 * dependency.c (gfc_is_same_range): Compare the stride, lower and
846 upper bounds when testing array reference ranges for equality.
847 (gfc_check_dependency): Fix indentation whitespace.
848 (gfc_check_element_vs_element): Likewise.
849 (gfc_dep_resolver): Likewise.
851 2006-02-28 Thomas Koenig <Thomas.Koenig@online.de>
853 * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc):
854 If the mask expression exists and has rank 0, enclose the
855 generated loop in an "if (mask)". Put the default
856 initialization into the else branch.
858 2006-02-25 Thomas Koenig <Thomas.Koenig@online.de>
861 * trans-intrinsic.c (gfc_conv_intrinsic_arith): If the
862 mask expression exists and has rank 0, enclose the generated
863 loop in an "if (mask)".
864 * (gfc_conv_intrinsic_minmaxloc): Likewise.
866 2006-02-24 Paul Thomas <pault@gcc.gnu.org>
869 * resolve.c (resolve_contained_functions, resolve_types,
870 gfc_resolve): Revert patch of 2006-02-19.
872 2006-02-24 Paul Thomas <pault@gcc.gnu.org>
875 * dependency.c (gfc_is_same_range): Correct typo.
876 (gfc_check_section_vs_section): Call gfc_is_same_range.
879 * trans-common.c (add_equivalences): Add a new flag that is set when
880 an equivalence is seen that prevents more from being reset until the
881 start of a new traversal of the list, thus ensuring completion of
882 all the equivalences.
884 2006-02-23 Erik Edelmann <eedelman@gcc.gnu.org>
886 * module.c (read_module): Remove redundant code lines.
888 2006-02-20 Rafael
\81Ávila de Esp
\81índola <rafael.espindola@gmail.com>
889 * Make-lang.in (FORTRAN): Remove
890 (.PHONY): Remove F95 and f95. Add fortran
892 2006-02-20 Roger Sayle <roger@eyesopen.com>
894 * trans-stmt.c (gfc_trans_where_2): Avoid updating unused current
895 execution mask for empty WHERE/ELSEWHERE clauses. Don't allocate
896 temporary mask arrays if they won't be used.
898 2006-02-20 Roger Sayle <roger@eyesopen.com>
900 * trans-stmt.c (gfc_trans_where_assign): Remove code to handle
901 traversing a linked list of MASKs. The MASK is now always a
902 single element requiring no ANDing during the assignment.
904 2006-02-19 Thomas Koenig <Thomas.Koenig@online.de>
906 * gfortran.texi: Document environment variables which
907 influence runtime behavior.
909 2006-02-19 H.J. Lu <hongjiu.lu@intel.com>
911 * resolve.c (resolve_contained_functions): Call resolve_entries
913 (resolve_types): Remove calls to resolve_entries and
914 resolve_contained_functions.
915 (gfc_resolve): Call resolve_contained_functions.
917 2006-02-19 Erik Edelmann <eedelman@gcc.gnu.org>
920 * intrinsic.c (gfc_convert_type_warn): Call
921 gfc_intrinsic_symbol() on the newly created symbol.
923 2006-02-19 Paul Thomas <pault@gcc.gnu.org>
926 * resolve.c (is_non_constant_shape_array): New function.
927 (resolve_fl_variable): Remove code for the new function and call it.
928 (resolve_fl_namelist): New function. Add test for namelist array
929 with non-constant shape, using is_non_constant_shape_array.
930 (resolve_symbol): Remove code for resolve_fl_namelist and call it.
933 * match.c (match_namelist): Increment the refs field of an accepted
934 namelist object symbol.
935 * resolve.c (resolve_fl_namelist): Test namelist objects for a conflict
936 with contained or module procedures.
938 2006-02-18 Roger Sayle <roger@eyesopen.com>
940 * trans-stmt.c (struct temporary_list): Delete.
941 (gfc_trans_where_2): Major reorganization. Remove no longer needed
942 TEMP argument. Allocate and deallocate the control mask and
943 pending control mask locally.
944 (gfc_trans_forall_1): Delete TEMP local variable, and update
945 call to gfc_trans_where_2. No need to deallocate arrays after.
946 (gfc_evaluate_where_mask): Major reorganization. Change return
947 type to void. Pass in parent execution mask, MASK, and two
948 already allocated mask arrays CMASK and PMASK. On return
949 CMASK := MASK & COND, PMASK := MASK & !COND. MASK, CMASK and
950 CMASK may all be NULL, or refer to the same temporary arrays.
951 (gfc_trans_where): Update call to gfc_trans_where_2. We no
952 longer need a TEMP variable or to deallocate temporary arrays
953 allocated by gfc_trans_where_2.
955 2006-02-18 Danny Smith <dannysmith@users.sourceforeg.net>
957 * gfortran.h (gfc_add_attribute): Change uint to unsigned int.
958 * symbol.c (gfc_add_attribute): Likewise for definition.
959 * resolve.c (resolve_global_procedure): Likewise for variable 'type'.
961 2006-02-17 Richard Sandiford <richard@codesourcery.com>
963 * trans-common.c: Include rtl.h earlier.
964 * trans-decl.c: Likewise.
966 2006-02-16 Jakub Jelinek <jakub@redhat.com>
969 * parse.c (parse_omp_do, parse_omp_structured_block): Call
970 gfc_commit_symbols and gfc_warning_check.
972 * openmp.c (resolve_omp_clauses): Add a dummy case label to workaround
975 2006-02-16 Paul Thomas <pault@gcc.gnu.org>
978 * trans-expr.c (gfc_add_interface_mapping): Use the actual argument
979 for character(*) arrays, rather than casting to the type and kind
980 parameters of the formal argument.
982 2006-02-15 Toon Moene <toon@moene.indiv.nluug.nl>
985 * options.c: Do not warn for Fortran 2003 features by default.
987 2006-02-15 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
989 * check.c: Update copyright years.
991 * check.c (gfc_check_minloc_maxloc, check_reduction): Don't call
992 dim_range_check on not-present optional dim argument.
994 2006-02-15 Jakub Jelinek <jakub@redhat.com>
998 * Make-lang.in (install-finclude-dir): New goal.
999 (fortran.install-common): Depend on install-finclude-dir.
1000 * lang-specs.h: If not -nostdinc, add -I finclude.
1002 2006-02-14 Thomas Koenig <Thomas.Koenig@online.de>
1005 * check.c (dim_check): Perform all checks if dim is optional.
1006 (gfc_check_minloc_maxloc): Use dim_check and dim_rank_check
1007 to check dim argument.
1008 (check_reduction): Likewise.
1010 2006-02-14 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
1013 * io.c (match_ltag): Mark label as referenced.
1015 2006-02-14 Jakub Jelinek <jakub@redhat.com>
1016 Richard Henderson <rth@redhat.com>
1017 Diego Novillo <dnovillo@redhat.com>
1019 * invoke.texi: Document -fopenmp.
1020 * gfortran.texi (Extensions): Document OpenMP.
1022 Backport from gomp-20050608-branch
1023 * trans-openmp.c: Call build_omp_clause instead of
1024 make_node when creating OMP_CLAUSE_* trees.
1025 (gfc_trans_omp_reduction_list): Remove argument 'code'.
1028 * trans.h (build4_v): Define.
1029 * trans-openmp.c: Call build4_v to create OMP_PARALLEL nodes.
1030 Call build3_v to create OMP_SECTIONS nodes.
1033 * openmp.c (gfc_match_omp_variable_list): Call gfc_set_sym_referenced
1034 on all symbols added to the variable list.
1036 * openmp.c (gfc_match_omp_clauses): Fix check for non-INTRINSIC
1037 procedure symbol in REDUCTION.
1039 * trans-openmp.c (gfc_trans_omp_array_reduction): Use gfc_add
1040 for MINUS_EXPR OMP_CLAUSE_REDUCTION_CODE.
1042 * trans-openmp.c (gfc_trans_omp_do): Add PBLOCK argument. If PBLOCK
1043 is non-NULL, evaluate INIT/COND/INCR and chunk size expressions in
1044 that statement block.
1045 (gfc_trans_omp_parallel_do): Pass non-NULL PBLOCK to gfc_trans_omp_do
1046 for non-ordered non-static combined loops.
1047 (gfc_trans_omp_directive): Pass NULL PBLOCK to gfc_trans_omp_do.
1049 * openmp.c: Include target.h and toplev.h.
1050 (gfc_match_omp_threadprivate): Emit diagnostic if target does
1052 * Make-lang.in (fortran/openmp.o): Add dependencies on
1053 target.h and toplev.h.
1055 * trans-decl.c (gfc_get_fake_result_decl): Set GFC_DECL_RESULT.
1056 * trans-openmp.c (gfc_omp_privatize_by_reference): Make
1057 DECL_ARTIFICIAL vars predetermined shared except GFC_DECL_RESULT.
1058 (gfc_omp_disregard_value_expr): Handle GFC_DECL_RESULT.
1059 (gfc_trans_omp_variable): New function.
1060 (gfc_trans_omp_variable_list, gfc_trans_omp_reduction_list): Use it.
1061 * trans.h (GFC_DECL_RESULT): Define.
1063 * trans-openmp.c (gfc_omp_firstprivatize_type_sizes): New function.
1064 * f95-lang.c (LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES): Define.
1065 * trans.h (gfc_omp_firstprivatize_type_sizes): New prototype.
1067 * trans-openmp.c (gfc_omp_privatize_by_reference): Return
1068 true if a pointer has GFC_DECL_SAVED_DESCRIPTOR set.
1069 (gfc_trans_omp_array_reduction, gfc_trans_omp_reduction_list): New
1071 (gfc_trans_omp_clauses): Add WHERE argument. Call
1072 gfc_trans_omp_reduction_list rather than gfc_trans_omp_variable_list
1074 (gfc_trans_omp_do, gfc_trans_omp_parallel, gfc_trans_omp_parallel_do,
1075 gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare,
1076 gfc_trans_omp_sections, gfc_trans_omp_single): Adjust
1077 gfc_trans_omp_clauses callers.
1079 * openmp.c (omp_current_do_code): New var.
1080 (gfc_resolve_omp_do_blocks): New function.
1081 (gfc_resolve_omp_parallel_blocks): Call it.
1082 (gfc_resolve_do_iterator): Add CODE argument. Don't propagate
1083 predetermination if argument is !$omp do or !$omp parallel do
1085 * resolve.c (resolve_code): Call gfc_resolve_omp_do_blocks
1086 for EXEC_OMP_DO. Adjust gfc_resolve_do_iterator caller.
1087 * fortran.h (gfc_resolve_omp_do_blocks): New prototype.
1088 (gfc_resolve_do_iterator): Add CODE argument.
1090 * trans.h (gfc_omp_predetermined_sharing,
1091 gfc_omp_disregard_value_expr, gfc_omp_private_debug_clause): New
1093 (GFC_DECL_COMMON_OR_EQUIV, GFC_DECL_CRAY_POINTEE): Define.
1094 * trans-openmp.c (gfc_omp_predetermined_sharing,
1095 gfc_omp_disregard_value_expr, gfc_omp_private_debug_clause): New
1097 * trans-common.c (build_equiv_decl, build_common_decl,
1098 create_common): Set GFC_DECL_COMMON_OR_EQUIV flag on the decls.
1099 * trans-decl.c (gfc_finish_cray_pointee): Set GFC_DECL_CRAY_POINTEE
1101 * f95-lang.c (LANG_HOOKS_OMP_PREDETERMINED_SHARING,
1102 LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR,
1103 LANG_HOOKS_OMP_PRIVATE_DEBUG_CLAUSE): Define.
1105 * openmp.c (resolve_omp_clauses): Remove extraneous comma.
1107 * symbol.c (check_conflict): Add conflict between cray_pointee and
1109 * openmp.c (gfc_match_omp_threadprivate): Fail if
1110 gfc_add_threadprivate returned FAILURE.
1111 (resolve_omp_clauses): Diagnose Cray pointees in SHARED,
1112 {,FIRST,LAST}PRIVATE and REDUCTION clauses and Cray pointers in
1113 {FIRST,LAST}PRIVATE and REDUCTION clauses.
1115 * resolve.c (omp_workshare_flag): New variable.
1116 (resolve_function): Diagnose use of non-ELEMENTAL user defined
1117 function in WORKSHARE construct.
1118 (resolve_code): Cleanup forall_save use. Make sure omp_workshare_flag
1119 is set to correct value in different contexts.
1121 * openmp.c (resolve_omp_clauses): Replace %s with '%s' when printing
1123 (resolve_omp_atomic): Likewise.
1126 * scanner.c (skip_free_comments): Set at_bol at the beginning of the
1127 loop, not before it.
1128 (skip_fixed_comments): Handle ! comments in the middle of line here
1130 (gfc_skip_comments): Use skip_fixed_comments for FIXED_FORM even if
1132 (gfc_next_char_literal): Fix expected canonicalized *$omp string.
1134 * trans-openmp.c (gfc_trans_omp_do): Use make_node and explicit
1135 initialization to build OMP_FOR instead of build.
1137 * trans-decl.c (gfc_gimplify_function): Invoke
1138 diagnose_omp_structured_block_errors.
1140 * trans-openmp.c (gfc_trans_omp_master): Use OMP_MASTER.
1141 (gfc_trans_omp_ordered): Use OMP_ORDERED.
1143 * gfortran.h (gfc_resolve_do_iterator, gfc_resolve_blocks,
1144 gfc_resolve_omp_parallel_blocks): New prototypes.
1145 * resolve.c (resolve_blocks): Renamed to...
1146 (gfc_resolve_blocks): ... this. Remove static.
1147 (gfc_resolve_forall): Adjust caller.
1148 (resolve_code): Only call gfc_resolve_blocks if code->block != 0
1149 and not for EXEC_OMP_PARALLEL* directives. Call
1150 gfc_resolve_omp_parallel_blocks for EXEC_OMP_PARALLEL* directives.
1151 Call gfc_resolve_do_iterator if resolved successfully EXEC_DO
1153 * openmp.c: Include pointer-set.h.
1154 (omp_current_ctx): New variable.
1155 (gfc_resolve_omp_parallel_blocks, gfc_resolve_do_iterator): New
1157 * Make-lang.in (fortran/openmp.o): Depend on pointer-set.h.
1159 * openmp.c (gfc_match_omp_clauses): For max/min/iand/ior/ieor,
1160 look up symbol if it exists, use its name instead and, if it is not
1161 INTRINSIC, issue diagnostics.
1163 * parse.c (parse_omp_do): Handle implied end do properly.
1164 (parse_executable): If parse_omp_do returned ST_IMPLIED_ENDDO,
1165 return it instead of continuing.
1167 * trans-openmp.c (gfc_trans_omp_critical): Update for changed
1169 (gfc_trans_omp_do, gfc_trans_omp_parallel, gfc_trans_omp_parallel_do,
1170 gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare,
1171 gfc_trans_omp_sections, gfc_trans_omp_single): Likewise.
1173 * trans.h (gfc_omp_privatize_by_reference): New prototype.
1174 * f95-lang.c (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Redefine
1175 to gfc_omp_privatize_by_reference.
1176 * trans-openmp.c (gfc_omp_privatize_by_reference): New function.
1178 * trans-stmt.h (gfc_trans_omp_directive): Add comment.
1180 * openmp.c (gfc_match_omp_variable_list): Add ALLOW_COMMON argument.
1181 Disallow COMMON matching if it is set.
1182 (gfc_match_omp_clauses, gfc_match_omp_flush): Adjust all callers.
1183 (resolve_omp_clauses): Show locus in error messages. Check that
1184 variable types in reduction clauses are appropriate for reduction
1187 * resolve.c (resolve_symbol): Don't error if a threadprivate module
1188 variable isn't SAVEd.
1190 * trans-openmp.c (gfc_trans_omp_do): Put count into BLOCK, not BODY.
1191 Fix typo in condition. Fix DOVAR initialization.
1193 * openmp.c (gfc_match_omp_clauses): Match min/iand/ior/ieor
1194 rather than .min. etc.
1196 * trans-openmpc.c (omp_not_yet): Remove.
1197 (gfc_trans_omp_parallel_do): Keep listprivate clause on parallel.
1198 Force creation of BIND_EXPR around the workshare construct.
1199 (gfc_trans_omp_parallel_sections): Likewise.
1200 (gfc_trans_omp_parallel_workshare): Likewise.
1202 * types.def (BT_I16, BT_FN_I16_VPTR_I16,
1203 BT_FN_BOOL_VPTR_I16_I16, BT_FN_I16_VPTR_I16_I16): Add.
1205 * trans-openmp.c (gfc_trans_omp_clauses): Create OMP_CLAUSE_DEFAULT.
1206 (gfc_trans_omp_code): New function.
1207 (gfc_trans_omp_do): Use it, remove omp_not_yet uses.
1208 (gfc_trans_omp_parallel, gfc_trans_omp_single): Likewise.
1209 (gfc_trans_omp_sections): Likewise. Only treat empty last section
1210 specially if lastprivate clause is present.
1211 * f95-lang.c (gfc_init_builtin_functions): Create BUILT_IN_TRAP
1214 * trans-openmp.c (gfc_trans_omp_variable_list): Update for
1215 OMP_CLAUSE_DECL name change.
1216 (gfc_trans_omp_do): Likewise.
1218 * trans-openmp.c (gfc_trans_omp_clauses): Create OMP_CLAUSE_REDUCTION
1220 (gfc_trans_omp_atomic): Build OMP_ATOMIC instead of expanding
1221 sync builtins directly.
1222 (gfc_trans_omp_single): Build OMP_SINGLE statement.
1224 * trans-openmp.c (gfc_trans_add_clause): New.
1225 (gfc_trans_omp_variable_list): Take a tree code and build the clause
1226 node here. Link it to the head of a list.
1227 (gfc_trans_omp_clauses): Update to match.
1228 (gfc_trans_omp_do): Use gfc_trans_add_clause.
1230 * trans-openmp.c (gfc_trans_omp_clauses): Change second argument to
1231 gfc_omp_clauses *. Use gfc_evaluate_now instead of creating
1232 temporaries by hand.
1233 (gfc_trans_omp_atomic, gfc_trans_omp_critical): Use buildN_v macros.
1234 (gfc_trans_omp_do): New function.
1235 (gfc_trans_omp_master): Dont' check for gfc_trans_code returning NULL.
1236 (gfc_trans_omp_parallel): Adjust gfc_trans_omp_clauses caller.
1237 Use buildN_v macros.
1238 (gfc_trans_omp_parallel_do, gfc_trans_omp_parallel_sections,
1239 gfc_trans_omp_parallel_workshare, gfc_trans_omp_sections,
1240 gfc_trans_omp_single, gfc_trans_omp_workshare): New functions.
1241 (gfc_trans_omp_directive): Use them.
1242 * parse.c (parse_omp_do): Allow new_st.op == EXEC_NOP.
1243 * openmp.c (resolve_omp_clauses): Check for list items present
1244 in multiple clauses.
1245 (resolve_omp_do): Check that iteration variable is not THREADPRIVATE
1246 and is not present in any clause variable lists other than PRIVATE
1249 * gfortran.h (symbol_attribute): Add threadprivate bit.
1250 (gfc_common_head): Add threadprivate member, change use_assoc
1251 and saved into char to save space.
1252 (gfc_add_threadprivate): New prototype.
1253 * symbol.c (check_conflict): Handle threadprivate.
1254 (gfc_add_threadprivate): New function.
1255 (gfc_copy_attr): Copy threadprivate.
1256 * trans-openmp.c (gfc_trans_omp_clauses): Avoid creating a temporary
1257 if IF or NUM_THREADS is constant. Create OMP_CLAUSE_SCHEDULE and
1259 * resolve.c (resolve_symbol): Complain if a THREADPRIVATE symbol
1260 outside a module and not in COMMON has is not SAVEd.
1261 (resolve_equivalence): Ensure THREADPRIVATE objects don't get
1263 * trans-common.c: Include target.h and rtl.h.
1264 (build_common_decl): Set DECL_TLS_MODEL if THREADPRIVATE.
1265 * trans-decl.c: Include rtl.h.
1266 (gfc_finish_var_decl): Set DECL_TLS_MODEL if THREADPRIVATE.
1267 * dump-parse-tree.c (gfc_show_attr): Handle THREADPRIVATE.
1268 * Make-lang.in (fortran/trans-decl.o): Depend on $(RTL_H).
1269 (fortran/trans-common.o): Depend on $(RTL_H) and $(TARGET_H).
1270 * openmp.c (gfc_match_omp_variable_list): Ensure COMMON block
1271 is from current namespace.
1272 (gfc_match_omp_threadprivate): Rewrite.
1273 (resolve_omp_clauses): Check some clause restrictions.
1274 * module.c (ab_attribute): Add AB_THREADPRIVATE.
1275 (attr_bits): Add THREADPRIVATE.
1276 (mio_symbol_attribute, mio_symbol_attribute): Handle threadprivate.
1277 (load_commons, write_common, write_blank_common): Adjust for type
1278 change of saved, store/load threadprivate bit from the integer
1281 * types.def (BT_FN_UINT_UINT): New.
1282 (BT_FN_VOID_UINT_UINT): Remove.
1284 * trans-openmp.c (gfc_trans_omp_clauses, gfc_trans_omp_barrier,
1285 gfc_trans_omp_critical, gfc_trans_omp_flush, gfc_trans_omp_master,
1286 gfc_trans_omp_ordered, gfc_trans_omp_parallel): New functions.
1287 (gfc_trans_omp_directive): Use them.
1289 * openmp.c (expr_references_sym): Add SE argument, don't look
1291 (is_conversion): New function.
1292 (resolve_omp_atomic): Adjust expr_references_sym callers. Handle
1293 promoted expressions.
1294 * trans-openmp.c (gfc_trans_omp_atomic): New function.
1295 (gfc_trans_omp_directive): Call it.
1297 * f95-lang.c (builtin_type_for_size): New function.
1298 (gfc_init_builtin_functions): Initialize synchronization and
1300 * types.def: New file.
1301 * Make-lang.in (f95-lang.o): Depend on $(BUILTINS_DEF) and
1304 * trans-openmp.c: Rename GOMP_* tree codes into OMP_*.
1306 * dump-parse-tree.c (show_symtree): Don't crash if ns->proc_name
1309 * dump-parse-tree.c (gfc_show_namelist, gfc_show_omp_node): New
1311 (gfc_show_code_node): Call gfc_show_omp_node for EXEC_OMP_* nodes.
1313 * parse.c (parse_omp_do): Call pop_state before next_statement.
1314 * openmp.c (expr_references_sym, resolve_omp_atomic, resolve_omp_do):
1316 (gfc_resolve_omp_directive): Call them.
1317 * match.c (match_exit_cycle): Issue error if EXIT or CYCLE statement
1318 leaves an OpenMP structured block or if EXIT terminates !$omp do
1321 * Make-lang.in (F95_PARSER_OBJS): Add fortran/openmp.o.
1322 (F95_OBJS): Add fortran/trans-openmp.o.
1323 (fortran/trans-openmp.o): Depend on $(GFORTRAN_TRANS_DEPS).
1324 * lang.opt: Add -fopenmp option.
1325 * options.c (gfc_init_options): Initialize it.
1326 (gfc_handle_option): Handle it.
1327 * gfortran.h (ST_OMP_ATOMIC, ST_OMP_BARRIER, ST_OMP_CRITICAL,
1328 ST_OMP_END_CRITICAL, ST_OMP_END_DO, ST_OMP_END_MASTER,
1329 ST_OMP_END_ORDERED, ST_OMP_END_PARALLEL, ST_OMP_END_PARALLEL_DO,
1330 ST_OMP_END_PARALLEL_SECTIONS, ST_OMP_END_PARALLEL_WORKSHARE,
1331 ST_OMP_END_SECTIONS, ST_OMP_END_SINGLE, ST_OMP_END_WORKSHARE,
1332 ST_OMP_DO, ST_OMP_FLUSH, ST_OMP_MASTER, ST_OMP_ORDERED,
1333 ST_OMP_PARALLEL, ST_OMP_PARALLEL_DO, ST_OMP_PARALLEL_SECTIONS,
1334 ST_OMP_PARALLEL_WORKSHARE, ST_OMP_SECTIONS, ST_OMP_SECTION,
1335 ST_OMP_SINGLE, ST_OMP_THREADPRIVATE, ST_OMP_WORKSHARE): New
1337 (OMP_LIST_PRIVATE, OMP_LIST_FIRSTPRIVATE, OMP_LIST_LASTPRIVATE,
1338 OMP_LIST_COPYPRIVATE, OMP_LIST_SHARED, OMP_LIST_COPYIN,
1339 OMP_LIST_PLUS, OMP_LIST_REDUCTION_FIRST, OMP_LIST_MULT,
1340 OMP_LIST_SUB, OMP_LIST_AND, OMP_LIST_OR, OMP_LIST_EQV,
1341 OMP_LIST_NEQV, OMP_LIST_MAX, OMP_LIST_MIN, OMP_LIST_IAND,
1342 OMP_LIST_IOR, OMP_LIST_IEOR, OMP_LIST_REDUCTION_LAST, OMP_LIST_NUM):
1343 New OpenMP variable list types.
1344 (gfc_omp_clauses): New typedef.
1345 (gfc_get_omp_clauses): Define.
1346 (EXEC_OMP_CRITICAL, EXEC_OMP_DO, EXEC_OMP_FLUSH, EXEC_OMP_MASTER,
1347 EXEC_OMP_ORDERED, EXEC_OMP_PARALLEL, EXEC_OMP_PARALLEL_DO,
1348 EXEC_OMP_PARALLEL_SECTIONS, EXEC_OMP_PARALLEL_WORKSHARE,
1349 EXEC_OMP_SECTIONS, EXEC_OMP_SINGLE, EXEC_OMP_WORKSHARE,
1350 EXEC_OMP_ATOMIC, EXEC_OMP_BARRIER, EXEC_OMP_END_NOWAIT,
1351 EXEC_OMP_END_SINGLE): New OpenMP gfc_exec_op codes.
1352 (struct gfc_code): Add omp_clauses, omp_name, omp_namelist
1353 and omp_bool fields to ext union.
1354 (flag_openmp): Declare.
1355 (gfc_free_omp_clauses, gfc_resolve_omp_directive): New prototypes.
1356 * scanner.c (openmp_flag, openmp_locus): New variables.
1357 (skip_free_comments, skip_fixed_comments, gfc_next_char_literal):
1358 Handle OpenMP directive lines and conditional compilation magic
1360 * parse.h (COMP_OMP_STRUCTURED_BLOCK): New compile state.
1361 * parse.c (decode_omp_directive, parse_omp_do, parse_omp_atomic,
1362 parse_omp_structured_block): New functions.
1363 (next_free, next_fixed): Parse OpenMP directives.
1364 (case_executable, case_exec_markers, case_decl): Add ST_OMP_*
1366 (gfc_ascii_statement): Handle ST_OMP_* codes.
1367 (parse_executable): Rearrange the loop slightly, so that
1368 parse_omp_do can return next_statement.
1369 * match.h (gfc_match_omp_eos, gfc_match_omp_atomic,
1370 gfc_match_omp_barrier, gfc_match_omp_critical, gfc_match_omp_do,
1371 gfc_match_omp_flush, gfc_match_omp_master, gfc_match_omp_ordered,
1372 gfc_match_omp_parallel, gfc_match_omp_parallel_do,
1373 gfc_match_omp_parallel_sections, gfc_match_omp_parallel_workshare,
1374 gfc_match_omp_sections, gfc_match_omp_single,
1375 gfc_match_omp_threadprivate, gfc_match_omp_workshare,
1376 gfc_match_omp_end_nowait, gfc_match_omp_end_single): New prototypes.
1377 * resolve.c (resolve_blocks): Ignore EXEC_OMP_* block directives.
1378 (resolve_code): Call gfc_resolve_omp_directive on EXEC_OMP_*
1380 * trans.c (gfc_trans_code): Call gfc_trans_omp_directive for
1381 EXEC_OMP_* directives.
1382 * st.c (gfc_free_statement): Handle EXEC_OMP_* statement freeing.
1383 * trans-stmt.h (gfc_trans_omp_directive): New prototype.
1384 * openmp.c: New file.
1385 * trans-openmp.c: New file.
1387 2006-02-13 Andrew Pinski <pinskia@physics.uc.edu>
1388 Jakub Jelinek <jakub@redhat.com>
1391 * trans-decl.c (gfc_get_symbol_decl, gfc_get_fake_result_decl): Use
1392 gfc_add_decl_to_function rather than gfc_finish_var_decl on length.
1394 2006-02-13 Paul Thomas <pault@gcc.gnu.org>
1398 * resolve.c (resolve_symbol): Extend the requirement that module
1399 arrays have constant bounds to those in the main program. At the
1400 same time simplify the array bounds, to avoiding trapping parameter
1401 array references, and exclude automatic character length from main
1402 and modules. Rearrange resolve_symbol and resolve_derived to put as
1403 each flavor together, as much as is possible and move all specific
1404 code for flavors FL_VARIABLE, FL_PROCEDURE and FL_PARAMETER into new
1406 (resolve_fl_var_and_proc, resolve_fl_variable, resolve_fl_procedure):
1407 New functions to do work of resolve_symbol.
1408 (resolve_index_expr): New function that is called from resolved_symbol
1409 and is extracted from resolve_charlen.
1410 (resolve_charlen): Call this new function.
1411 (resolve_fl_derived): Renamed resolve_derived to be consistent with
1412 the naming of the new functions for the other flavours. Change the
1413 charlen checking so that the style is consistent with other similar
1414 checks. Add the generation of the gfc_dt_list, removed from resolve_
1418 * resolve.c (resolve_actual_arglist): Prevent internal procedures
1419 from being dummy arguments.
1422 * resolve.c (resolve_actual_arglist): Prevent pure but non-intrinsic
1423 procedures from being dummy arguments.
1426 * resolve.c (check_data_variable): Add test that data variable is in
1430 * resolve.c (resolve_call): Add test that the subroutine does not
1433 2006-02-12 Erik Edelmann <eedelman@gcc.gnu.org>
1436 * trans-array.c (gfc_trans_allocate_array_storage): New argument
1437 dealloc; free the temporary only if dealloc is true.
1438 (gfc_trans_allocate_temp_array): New argument bool dealloc, to be
1439 passed onwards to gfc_trans_allocate_array_storage.
1440 (gfc_trans_array_constructor, gfc_conv_loop_setup): Update call to
1441 gfc_trans_allocate_temp_array.
1442 * trans-array.h (gfc_trans_allocate_temp_array): Update function
1444 * trans-expr.c (gfc_conv_function_call): Set new argument 'dealloc'
1445 to gfc_trans_allocate_temp_array to false in case of functions
1447 (gfc_trans_arrayfunc_assign): Return NULL for functions returning
1450 2006-02-10 Steven G. Kargl <kargls@comcast.net>
1453 *decl.c (variable_decl): Improve error message. Remove initialization
1454 typespec. Wrap long line.
1455 *expr.c (gfc_check_pointer_assign): Permit checking of type, kind type,
1457 *simplify.c (gfc_simplify_null): Ensure type, kind type, and rank
1461 2006-02-10 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
1464 * arith.c (eval_intrinsic): Accept INTRINSIC_PARENTHESES.
1465 * expr.c (check_intrinsic_op): Likewise.
1466 * module.c (mio_expr): Likewise.
1468 2006-02-09 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
1470 * dump-parse-tree.c: Update copyright years.
1471 * matchexp.c: Likewise.
1472 * module.c: Likewise.
1475 * gfortran.h (gfc_intrinsic_op): Add INTRINSIC_PARENTHESES.
1476 * dump-parse-tree (gfc_show_expr): Handle INTRINSIC_PARENTHESES.
1477 * expr.c (simplify_intrinsic_op): Treat INTRINSIC_PARENTHESES as
1478 if it were INTRINSIC_UPLUS.
1479 * resolve.c (resolve_operator): Handle INTRINSIC_PARENTHESES.
1480 * match.c (intrinsic_operators): Add INTRINSIC_PARENTHESES.
1481 * matchexp.c (match_primary): Record parentheses surrounding
1482 numeric expressions.
1483 * module.c (intrinsics): Add INTRINSIC_PARENTHESES for module
1485 * trans-expr.c (gfc_conv_expr_op): Handle INTRINSIC_PARENTHESES.
1487 2006-02-09 Paul Thomas <pault@gcc.gnu.org>
1490 * trans-stmt.c (gfc_trans_allocate): Provide assumed character length
1491 scalar with missing backend_decl for the hidden dummy charlen.
1494 * interface.c (gfc_extend_assign): Remove detection of non-PURE
1495 subroutine in assignment interface, with gfc_error, and put it in
1496 * resolve.c (resolve_code).
1499 * interface.c (gfc_procedure_use): Flag rank checking for non-
1500 elemental, contained or interface procedures in call to
1501 (compare_actual_formal), where ranks are checked for assumed
1504 2006-02-08 Francois-Xavier Coudert <coudert@clipper.ens.fr>
1507 * trans-decl.c (gfc_generate_function_code): Add new argument,
1508 pedantic, to set_std call.
1510 2006-02-06 Thomas Koenig <Thomas.Koenig@online.de>
1513 * gfortran.texi: Document the GFORTRAN_CONVERT_UNIT environment
1515 * invoke.texi: Mention the "Runtime" chapter.
1516 Document the -fconvert= option.
1517 * gfortran.h: Add options_convert.
1518 * lang.opt: Add fconvert=little-endian, fconvert=big-endian,
1519 fconvert=native and fconvert=swap.
1520 * trans-decl.c (top level): Add gfor_fndecl_set_convert.
1521 (gfc_build_builtin_function_decls): Set gfor_fndecl_set_convert.
1522 (gfc_generate_function_code): If -fconvert was specified,
1523 and this is the main program, add a call to set_convert().
1524 * options.c: Handle the -fconvert options.
1526 2006-02-06 Roger Sayle <roger@eyesopen.com>
1528 * trans-stmt.c (gfc_evaluate_where_mask): Allow the NMASK argument
1529 to be NULL to indicate that the not mask isn't required.
1530 (gfc_trans_where_2): Remove PMASK argument. Avoid calculating the
1531 pending mask for the last clause of a WHERE chain. Update recursive
1533 (gfc_trans_forall_1): Update call to gfc_trans_where_2.
1534 (gfc_trans_where): Likewise.
1536 2006-02-06 Jakub Jelinek <jakub@redhat.com>
1538 Backport from gomp-20050608-branch
1539 * trans-decl.c (create_function_arglist): Handle dummy functions.
1541 * trans-decl.c (gfc_get_symbol_decl): Revert explicit setting of
1543 (gfc_trans_vla_type_sizes): Also "gimplify"
1544 GFC_TYPE_ARRAY_DATAPTR_TYPE for GFC_DESCRIPTOR_TYPE_P types.
1545 * trans-array.c (gfc_trans_deferred_array): Call
1546 gfc_trans_vla_type_sizes.
1548 * trans-decl.c (saved_function_decls, saved_parent_function_decls):
1549 Remove unnecessary initialization.
1550 (create_function_arglist): Make sure __result has complete type.
1551 (gfc_get_fake_result_decl): Change current_fake_result_decl into
1552 a tree chain. For entry master, create a separate variable
1553 for each result name. For BT_CHARACTER results, call
1554 gfc_finish_var_decl on length even if it has been already created,
1555 but not pushdecl'ed.
1556 (gfc_trans_vla_type_sizes): For function/entry result, adjust
1557 result value type, not the FUNCTION_TYPE.
1558 (gfc_generate_function_code): Adjust for current_fake_result_decl
1560 (gfc_trans_deferred_vars): Likewise. Call gfc_trans_vla_type_sizes
1561 even on result if it is assumed-length character.
1563 * trans-decl.c (gfc_trans_dummy_character): Add SYM argument.
1564 Call gfc_trans_vla_type_sizes.
1565 (gfc_trans_auto_character_variable): Call gfc_trans_vla_type_sizes.
1566 (gfc_trans_vla_one_sizepos, gfc_trans_vla_type_sizes_1,
1567 gfc_trans_vla_type_sizes): New functions.
1568 (gfc_trans_deferred_vars): Adjust gfc_trans_dummy_character
1569 callers. Call gfc_trans_vla_type_sizes on assumed-length
1570 character parameters.
1571 * trans-array.c (gfc_trans_array_bounds,
1572 gfc_trans_auto_array_allocation, gfc_trans_dummy_array_bias): Call
1573 gfc_trans_vla_type_sizes.
1574 * trans.h (gfc_trans_vla_type_sizes): New prototype.
1576 * trans-decl.c (gfc_build_qualified_array): For non-assumed-size
1577 arrays without constant size, create also an index var for
1578 GFC_TYPE_ARRAY_SIZE (type). If the type is incomplete, complete
1580 (gfc_create_string_length): Don't call gfc_defer_symbol_init
1581 if just creating DECL_ARGUMENTS.
1582 (gfc_get_symbol_decl): Call gfc_finish_var_decl and
1583 gfc_defer_symbol_init even if ts.cl->backend_decl is already
1584 set to a VAR_DECL that doesn't have DECL_CONTEXT yet.
1585 (create_function_arglist): Rework, so that hidden length
1586 arguments for CHARACTER parameters are created together with
1587 the parameters. Resolve ts.cl->backend_decl for CHARACTER
1588 parameters. If the argument is a non-constant length array
1589 or CHARACTER, ensure PARM_DECL has different type than
1591 (generate_local_decl): Call gfc_get_symbol_decl even
1592 for non-referenced non-constant length CHARACTER parameters
1593 after optionally issuing warnings.
1594 * trans-array.c (gfc_trans_array_bounds): Set last stride
1595 to GFC_TYPE_ARRAY_SIZE (type) to initialize it as well.
1596 (gfc_trans_dummy_array_bias): Initialize GFC_TYPE_ARRAY_SIZE (type)
1599 * trans-expr.c (gfc_conv_expr_val): Fix comment typo.
1601 * trans-stmt.c (gfc_trans_simple_do): Fix comment.
1603 2006-02-04 Roger Sayle <roger@eyesopen.com>
1605 * dependency.c (gfc_check_dependency): Remove unused vars and nvars
1606 arguments. Replace with an "identical" argument. A full array
1607 reference to the same symbol is a dependency if identical is true.
1608 * dependency.h (gfc_check_dependency): Update prototype.
1609 * trans-array.h (gfc_check_dependency): Delete duplicate prototype.
1610 * trans-stmt.c: #include dependency.h for gfc_check_dependency.
1611 (gfc_trans_forall_1): Update calls to gfc_check_dependency.
1612 (gfc_trans_where_2): Likewise. Remove unneeded variables.
1613 (gfc_trans_where_3): New function for simple non-dependent WHEREs.
1614 (gfc_trans_where): Call gfc_trans_where_3 to translate simple
1615 F90-style WHERE statements without internal dependencies.
1616 * Make-lang.in (trans-stmt.o): Depend upon dependency.h.
1618 2006-02-05 H.J. Lu <hongjiu.lu@intel.com>
1622 * resolve.c (resolve_types): New function.
1623 (resolve_codes): Likewise.
1624 (gfc_resolve): Use them.
1626 2006-02-05 Roger Sayle <roger@eyesopen.com>
1628 * trans-stmt.c (gfc_evaluate_where_mask): Use LOGICAL*1 for WHERE
1629 masks instead of LOGICAL*4.
1631 2006-02-05 Jakub Jelinek <jakub@redhat.com>
1633 * resolve.c (resolve_symbol): Initialize constructor_expr to NULL.
1635 2006-02-04 Thomas Koenig <Thomas.Koenig@online.de>
1638 check.c (identical_dimen_shape): New function.
1639 (check_dot_product): Use identical_dimen_shape() to check sizes
1641 (gfc_check_matmul): Likewise.
1642 (gfc_check_merge): Check conformance between tsource and fsource
1643 and between tsource and mask.
1644 (gfc_check_pack): Check conformance between array and mask.
1646 2006-02-03 Steven G. Kargl <kargls@comcast>
1647 Paul Thomas <pault@gcc.gnu.org>
1650 * resolve.c (resolve_symbol): Default initialization of derived type
1651 component reguires the SAVE attribute.
1653 2006-02-02 Steven G. Kargl <kargls@comcast>
1656 match.c (gfc_match_nullify): Free the list from head not tail.
1659 * match.c (match_forall_header): Fix internal error caused by bogus
1663 2006-01-31 Thomas Koenig <Thomas.Koenig@online.de>
1666 expr.c (gfc_check_conformance): Reorder error message
1668 check.c(gfc_check_minloc_maxloc): Call gfc_check_conformance
1669 for checking arguments array and mask.
1670 (check_reduction): Likewise.
1672 2006-01-30 Erik Edelmann <eedelman@gcc.gnu.org>
1675 * trans-io.c (set_internal_unit): Check the rank of the
1676 expression node itself instead of its symbol.
1678 2006-01-29 Paul Thomas <pault@gcc.gnu.org>
1684 * interface.c (compare_actual_formal): Error for INTENT(OUT or INOUT)
1685 if actual argument is not a variable.
1687 2006-01-28 Paul Thomas <pault@gcc.gnu.org>
1690 * expr.c (gfc_check_assign, gfc_check_pointer_assign): Emit error if
1691 the lvalue is a use associated procedure.
1695 * expr.c (gfc_check_pointer_assign): Emit error if lvalue and rvalue
1696 character lengths are not the same. Use gfc_dep_compare_expr for the
1698 * gfortran.h: Add prototype for gfc_dep_compare_expr.
1699 * dependency.h: Remove prototype for gfc_dep_compare_expr.
1701 2006-01-27 Paul Thomas <pault@gcc.gnu.org>
1704 * resolve.c (resolve_function): Add GFC_ISYM_LOC to the list of
1705 generic_ids exempted from assumed size checking.
1707 2006-01-27 Jakub Jelinek <jakub@redhat.com>
1710 * Make-lang.in (fortran/scanner.o): Depend on toplev.h.
1711 * lang.opt (fpreprocessed): New option.
1712 * scanner.c: Include toplev.h.
1713 (gfc_src_file, gfc_src_preprocessor_lines): New variables.
1714 (preprocessor_line): Unescape filename if there were any
1716 (load_file): If initial and gfc_src_file is not NULL,
1717 use it rather than opening the file. If gfc_src_preprocessor_lines
1718 has non-NULL elements, pass it to preprocessor_line.
1719 (unescape_filename, gfc_read_orig_filename): New functions.
1720 * gfortran.h (gfc_option_t): Add flag_preprocessed.
1721 (gfc_read_orig_filename): New prototype.
1722 * options.c (gfc_init_options): Clear flag_preprocessed.
1723 (gfc_post_options): If flag_preprocessed, call
1724 gfc_read_orig_filename.
1725 (gfc_handle_option): Handle OPT_fpreprocessed.
1726 * lang-specs.h: Pass -fpreprocessed to f951 if preprocessing
1729 2006-01-27 Erik Edelmann <eedelman@gcc.gnu.org>
1731 * symbol.c (free_old_symbol): Fix confusing comment, and add code
1732 to free old_symbol->formal.
1734 2006-01-26 Paul Thomas <pault@gcc.gnu.org>
1737 * resolve.c (resolve_function): Exclude statement functions from
1738 global reference checking.
1744 * resolve.c (resolve_function): Declare a gfc_symbol to replace the
1745 references through the symtree to the symbol associated with the
1746 function expresion. Give error on reference to an assumed character
1747 length function is defined in an interface or an external function
1748 that is not a dummy argument.
1749 (resolve_symbol): Give error if an assumed character length function
1750 is array-valued, pointer-valued, pure or recursive. Emit warning
1751 that character(*) value functions are obsolescent in F95.
1754 * trans-expr.c (gfc_conv_function_call): The above patch to resolve.c
1755 prevents any assumed character length function call from getting here
1756 except intrinsics such as SPREAD. In this case, ensure that no
1757 segfault occurs from referencing non-existent charlen->length->
1758 expr_type and provide a backend_decl for the charlen from the charlen
1759 of the first actual argument.
1761 Cure temp name confusion.
1762 * trans-expr.c (gfc_get_interface_mapping_array): Change name of
1763 temporary from "parm" to "ifm" to avoid clash with temp coming from
1766 2006-01-25 Erik Edelmann <eedelman@gcc.gnu.org>
1769 * symbol.c (free_old_symbol): New function.
1770 (gfc_commit_symbols): Use it.
1771 (gfc_commit_symbol): New function.
1772 (gfc_use_derived): Use it.
1773 * gfortran.h: Add prototype for gfc_commit_symbol.
1774 * intrinsic.c (gfc_find_function): Search in 'conversion'
1775 if not found in 'functions'.
1776 (gfc_convert_type_warn): Add a symtree to the new
1777 expression node, and commit the new symtree->n.sym.
1778 * resolve.c (gfc_resolve_index): Make sure typespec is
1779 properly initialized.
1781 2006-01-23 Paul Thomas <pault@gcc.gnu.org>
1784 * decl.c (get_proc_name): Replace subroutine and function attributes
1785 in "already defined" test by the formal arglist pointer being non-NULL.
1787 Fix regression in testing of admissability of attributes.
1788 * symbol.c (gfc_add_attribute): If the current_attr has non-zero
1789 intent, do not do the check for a dummy being used.
1790 * decl.c (attr_decl1): Add current_attr.intent as the third argument
1791 in the call to gfc_add_attribute.
1792 * gfortran.h: Add the third argument to the prototype for
1795 2006-01-21 Joseph S. Myers <joseph@codesourcery.com>
1797 * gfortranspec.c (lang_specific_driver): Update copyright notice
1800 2006-01-21 Paul Thomas <pault@gcc.gnu.org>
1804 * decl.c (get_proc_name): If there is an existing
1805 symbol in the encompassing namespace, call errors
1806 if it is a procedure of the same name or the kind
1807 field is set, indicating a type declaration.
1813 * decl.c (add_global_entry): New function to check
1814 for existing global symbol with this name and to
1815 create new one if none exists.
1816 (gfc_match_entry): Call add_global_entry before
1817 matching argument lists for subroutine and function
1819 * gfortran.h: Prototype for existing function,
1821 * resolve.c (resolve_global_procedure): New function
1822 to check global symbols for procedures.
1823 (resolve_call, resolve_function): Calls to this
1824 new function for non-contained and non-module
1826 * match.c (match_common): Add check for existing
1827 global symbol, creat one if none exists and emit
1828 error if there is a clash.
1829 * parse.c (global_used): Remove static and use the
1830 gsymbol name rather than the new_block name, so that
1831 the function can be called from resolve.c.
1832 (parse_block_data, parse_module, add_global_procedure):
1833 Improve checks for existing gsymbols. Emit error if
1834 already defined or if references were to another type.
1838 * trans-expr.c (gfc_conv_aliased_arg): New function called by
1839 gfc_conv_function_call that coverts an expression for an aliased
1840 component reference to a derived type array into a temporary array
1841 of the same type as the component. The temporary is passed as an
1842 actual argument for the procedure call and is copied back to the
1843 derived type after the call.
1844 (is_aliased_array): New function that detects an array reference
1845 that is followed by a component reference.
1846 (gfc_conv_function_call): Detect an aliased actual argument with
1847 is_aliased_array and convert it to a temporary and back again
1848 using gfc_conv_aliased_arg.
1850 2006-01-19 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
1852 * gfortranspec.c: Update copyright years.
1853 * trans.c: Likewise.
1854 * trans-array.c: Likewise.
1855 * trans-array.h: Likewise.
1856 * trans-decl.c: Likewise.
1857 * trans-stmt.c: Likewise.
1858 * trans-stmt.h: Likewise.
1859 * trans-types.c: Likewise.
1861 2006-01-18 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
1865 * gfortran.h (BBT_HEADER): Move definition up.
1866 (gfc_st_label): Add BBT_HEADER, remove 'prev' and 'next'.
1867 * io.c (format_asterisk): Adapt initializer.
1868 * resolve.c (resolve_branch): Allow FORTRAN 66 cross-block GOTOs
1870 (warn_unused_label): Take gfc_st_label label as argument, adapt to
1872 (gfc_resolve): Adapt call to warn_unused_label.
1873 * symbol.c (compare_st_labels): New function.
1874 (gfc_free_st_label, free_st_labels, gfc_get_st_label): Convert to
1875 using balanced binary tree.
1876 * decl.c (match_char_length, gfc_match_old_kind_spec): Do away
1878 (warn_unused_label): Adapt to binary tree.
1879 * match.c (gfc_match_small_literal_int): Only set cnt if non-NULL.
1880 * primary.c (match_kind_param): Do away with cnt.
1882 2006-01-18 Paul Thomas <pault@gcc.gnu.org>
1887 * symbol.c (check_conflict): Add pointer valued elemental
1888 functions and internal procedures with the external attribute
1889 to the list of conflicts.
1890 (gfc_add_attribute): New catch-all function to perform the
1891 checking of symbol attributes for attribute declaration
1893 * decl.c (attr_decl1): Call gfc_add_attribute for each of -
1894 (gfc_match_external, gfc_match_intent, gfc_match_intrinsic,
1895 gfc_match_pointer, gfc_match_dimension, gfc_match_target):
1896 Remove spurious calls to checks in symbol.c. Set the
1897 attribute directly and use the call to attr_decl() for
1899 * gfortran.h: Add prototype for gfc_add_attribute.
1902 * resolve.c (resolve_function): Exclude PRESENT from assumed size
1903 argument checking. Replace strcmp's with comparisons with generic
1906 2006-01-16 Rafael
\81Ávila de Esp
\81índola <rafael.espindola@gmail.com>
1908 * gfortranspec.c (lang_specific_spec_functions): Remove.
1910 2006-01-16 Richard Guenther <rguenther@suse.de>
1912 * trans-stmt.c (gfc_trans_if_1): Use fold_buildN and build_int_cst.
1913 (gfc_trans_arithmetic_if): Likewise.
1914 (gfc_trans_simple_do): Likewise.
1915 (gfc_trans_do): Likewise.
1916 (gfc_trans_do_while): Likewise.
1917 (gfc_trans_logical_select): Likewise.
1918 (gfc_trans_forall_loop): Likewise.
1919 (generate_loop_for_temp_to_lhs): Likewise.
1920 (generate_loop_for_rhs_to_temp): Likewise.
1921 (gfc_trans_allocate): Likewise.
1922 * trans.c (gfc_add_expr_to_block): Do not fold expr again.
1924 2006-01-16 Richard Guenther <rguenther@suse.de>
1926 * trans-expr.c (gfc_conv_function_call): Use fold_build2.
1927 * trans-stmt.c (gfc_trans_goto): Likewise. Use build_int_cst.
1928 * trans.c (gfc_trans_runtime_check): Don't fold the condition
1931 2006-01-13 Steven G. Kargl <kargls@comcast.net>
1934 * symbol.c (gfc_free_st_label): Give variable meaningful name. Remove
1935 unneeded parenthesis. Fix-up the head of the list (2 lines gleaned
1938 2006-01-13 Diego Novillo <dnovillo@redhat.com>
1940 * trans.c (gfc_add_expr_to_block): Do not fold tcc_statement
1943 2006-01-11 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
1945 * parse.c (next_fixed): Remove superfluous string concatenation.
1947 2006-01-11 Bernhard Fischer <rep.nop@aon.at>
1950 * scanner.c (load_line): use maxlen to determine the line-length used
1951 for padding lines in fixed form.
1953 2006-01-11 Paul Thomas <pault@gcc.gnu.org>
1956 * trans-types.c (copy_dt_decls_ifequal): Copy backend decl for
1959 2006-01-09 Andrew Pinski <pinskia@physics.uc.edu>
1962 * trans-stmt.c (gfc_trans_pointer_assign_need_temp): Use fold_convert
1963 to avoid type mismatch.
1965 2006-01-09 Andrew Pinski <pinskia@physics.uc.edu>
1968 * trans-decl.c (gfc_generate_function_code): Move the NULLing of
1969 current_fake_result_decl down to below generate_local_vars.
1971 2006-01-09 Feng Wang <fengwang@nudt.edu.cn>
1974 * trans-expr.c (gfc_to_single_character): New function that converts
1975 string to single character if its length is 1.
1976 (gfc_build_compare_string):New function that compare string and handle
1977 single character specially.
1978 (gfc_conv_expr_op): Use gfc_build_compare_string.
1979 (gfc_trans_string_copy): Use gfc_to_single_character.
1980 * trans-intrinsic.c (gfc_conv_intrinsic_strcmp): Use
1981 gfc_build_compare_string.
1982 * trans.h (gfc_build_compare_string): Add prototype.
1984 2006-01-09 Feng Wang <fengwang@nudt.edu.cn>
1986 * simplify.c (gfc_simplify_char): Use UCHAR_MAX instead of literal
1988 (gfc_simplify_ichar): Get the result from unsinged char and in the
1989 range 0 to UCHAR_MAX instead of CHAR_MIN to CHAR_MAX.
1991 2006-01-08 Erik Edelmann <eedelman@gcc.gnu.org>
1994 * resolve.c (resolve_fntype): Check that PUBLIC functions
1995 aren't of PRIVATE type.
1997 2006-01-07 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de>
1999 * decl.c (gfc_match_function_decl): Correctly error out in case of
2000 omitted function argument list.
2002 2006-01-07 Paul Thomas <pault@gcc.gnu.org>
2005 * trans-array.c (gfc_reverse_ss): Remove static attribute.
2006 (gfc_walk_elemental_function_args): Replace gfc_expr * argument for
2007 the function call with the corresponding gfc_actual_arglist*. Change
2009 (gfc_walk_function_expr): Call to gfc_walk_elemental_function_args
2010 now requires the actual argument list instead of the expression for
2012 * trans-array.h: Modify the prototype for gfc_walk_elemental_function_args
2013 and provide a prototype for gfc_reverse_ss.
2014 * trans-stmt.h (gfc_trans_call): Add the scalarization code for the case
2015 where an elemental subroutine has array valued actual arguments.
2021 * resolve.c (check_assumed_size_reference): New function to check for upper
2022 bound in assumed size array references.
2023 (resolve_assumed_size_actual): New function to do a very restricted scan
2024 of actual argument expressions of those procedures for which incomplete
2025 assumed size array references are not allowed.
2026 (resolve_function, resolve_call): Switch off assumed size checking of
2027 actual arguments, except for elemental procedures and intrinsic
2028 inquiry functions, in some circumstances.
2029 (resolve_variable): Call check_assumed_size_reference.
2031 2006-01-05 Jerry DeLisle <jvdelisle@gcc.gnu.org>
2034 * io.c (next_char_not_space): New function that returns the next
2035 character that is not white space.
2036 (format_lex): Use the new function to skip whitespace within
2039 2006-01-05 Erik Edelmann <eedelman@gcc.gnu.org>
2042 * expr.c (gfc_expr_set_symbols_referenced): New function.
2043 * gfortran.h: Add a function prototype for it.
2044 * resolve.c (resolve_function): Use it for
2045 use associated character functions lengths.
2046 * expr.c, gfortran.h, resolve.c: Updated copyright years.
2048 2006-01-03 Steven G. Kargl <kargls@comcast.net>
2051 * resolve.c (resolve_forall_iterators): Check for scalar variables;
2052 Check stride is nonzero.
2054 2006-01-02 Steven G. Kargl <kargls@comcast.net>
2057 * parse.c (next_free): Check for whitespace after the label.
2058 * match.c (gfc_match_small_literal_int): Initialize cnt variable.
2060 2006-01-01 Steven G. Kargl <kargls@comcast.net>
2062 * ChangeLog: Split previous years into ...
2063 * ChangeLog-2002: here.
2064 * ChangeLog-2003: here.
2065 * ChangeLog-2004: here.
2066 * ChangeLog-2005: here.