2005-05-10 Thomas Koenig <Thomas.Koenig@online.de>
[official-gcc.git] / gcc / fortran / ChangeLog
blob9fbde4d3b2249263fa6e62113d2970a73492916f
1 2005-05-10  Thomas Koenig  <Thomas.Koenig@online.de>
3         PR fortran/27470
4         * trans-array.c(gfc_array_allocate):  If ref->next exists
5         that is if there is a statement like ALLOCATE(foo%bar(2)),
6         F95 rules require that bar should be a pointer.
8 2006-05-10  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
10         PR fortran/20460
11         * resolve.c (gfc_resolve_index): Make REAL array indices a
12         GFC_STD_LEGACY feature.
14 2006-05-10  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
16         PR fortran/24549
17         * parse.c (reject_statement): Clear gfc_new_block.
19 2006-05-09  Steven G. Kargl  <kargls@comcast.net>
21         * invoke.texi: Missed file in previous commit.  Update
22          description of -fall-intrinsics
24 2006-05-07  Steven Boscher  <steven@gcc.gnu.org>
26         PR fortran/27378
27         * parse.c (next_statement): Add check to avoid an ICE when
28         gfc_current_locus.lb is not set.
30 2006-05-07  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
32         PR fortran/27457
33         * match.c (match_case_eos): Error out on garbage following
34         CASE(...).
36 2006-05-07  Paul Thomas  <pault@gcc.gnu.org>
38         PR fortran/24813
39         * trans-array.c (get_array_ctor_strlen): Remove static attribute.
40         * trans.h: Add prototype for get_array_ctor_strlen.
41         * trans-intrinsic.c (gfc_conv_intrinsic_len): Switch on EXPR_ARRAY
42         and call get_array_ctor_strlen.
44 2006-05-05  Steven G. Kargl  <kargls@comcast.net>
46         * invoke.texi: Update description of -fall-intrinsics
47         * options.c (gfc_post_options): Disable -Wnonstd-intrinsics if
48         -fall-intrinsics is used.
49         (gfc_handle_option): Permit -Wno-nonstd-intrinsics.
51 2006-05-04  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
53         * simplify.c (ascii_table): Fix wrong entry.
55 2006-05-02  Steven G. Kargl  <kargls@comcast.net>
57         PR fortran/26896
58         * lang.opt: Fix -Wtab description
60         PR fortran/20248  
61         * lang.opt: New flag -fall-intrinsics.
62         * invoke.texi:  Document option.
63         * gfortran.h (options_t):  New member flag_all_intrinsics.
64         * options.c (gfc_init_options, gfc_handle_option): Set new option.
65         sort nearby misplaced options.
66         * intrinsic.c (add_sym, make_generic, make_alias):  Use it.
68 2006-05-02 Paul Thomas <pault@gcc.gnu.org>
70         PR fortran/27269
71         * module.c: Add static flag in_load_equiv.
72         (mio_expr_ref): Return if no symtree and in_load_equiv.
73         (load_equiv): If any of the equivalence members have no symtree, free
74         the equivalence and the associated expressions.
76         PR fortran/27324
77         * trans-common.c (gfc_trans_common): Invert the order of calls to
78         finish equivalences and gfc_commit_symbols.
80 2006-04-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
82         PR fortran/25681
83         * simplify.c (simplify_len): Character variables with constant
84         length can be simplified.
86 2006-04-29  H.J. Lu  <hongjiu.lu@intel.com>
88         PR fortran/27351
89         * trans-array.c (gfc_conv_array_transpose): Move gcc_assert
90         before gfc_conv_expr_descriptor.
92 2006-04-23  Paul Thomas  <pault@gcc.gnu.org>
94         PR fortran/25099
95         * resolve.c (resolve_call): Check conformity of elemental
96         subroutine actual arguments.
98 2006-04-22  Jakub Jelinek  <jakub@redhat.com>
100         PR fortran/26769
101         * iresolve.c (gfc_resolve_reshape): Use reshape_r16 for real(16).
102         (gfc_resolve_transpose): Use transpose_r16 for real(16).
104 2006-04-21 Paul Thomas <pault@gcc.gnu.org>
106         PR fortran/27122
107         * resolve.c (resolve_function): Remove general restriction on auto
108         character length function interfaces.
109         (gfc_resolve_uops): Check restrictions on defined operator
110         procedures.
111         (resolve_types): Call the check for defined operators.
113         PR fortran/27113
114         * trans-array.c (gfc_trans_array_constructor_subarray): Remove
115         redundant gfc_todo_error.
116         (get_array_ctor_var_strlen): Remove typo in enum.
118 2006-04-18  Bernhard Fischer  <aldot@gcc.gnu.org>
120         * parse.c (next_free): Use consistent error string between
121         free-form and fixed-form for illegal statement label of zero.
122         (next_fixed): Use consistent warning string between free-form
123         and fixed-form for statement labels for empty statements.
125 2006-04-18  Steve Ellcey  <sje@cup.hp.com>
127         * trans-io.c (gfc_build_io_library_fndecls): Align pad.
129 2006-04-16  Thomas Koenig  <Thomas.Koenig@online.de>
131         PR fortran/26017
132         * trans-array.c(gfc_array_init_size):  Introduce or_expr
133         which is true if the size along any dimension
134         is negative.  Create a temporary variable with base
135         name size.  If or_expr is true, set the temporary to 0,
136         to the normal size otherwise.
138 2006-04-16  Paul Thomas  <pault@gcc.gnu.org>
140         PR fortran/26822
141         * intrinsic.c (add_functions): Mark LOGICAL as elemental.
143         PR fortran/26787
144         * expr.c (gfc_check_assign): Extend scope of error to include
145         assignments to a procedure in the main program or, from a
146         module or internal procedure that is not that represented by
147         the lhs symbol. Use VARIABLE rather than l-value in message.
149         PR fortran/27096
150         * trans-array.c (gfc_trans_deferred_array): If the backend_decl
151         is not a descriptor, dereference and then test and use the type.
153         PR fortran/25597
154         * trans-decl.c (gfc_trans_deferred_vars): Check if an array
155         result, is also automatic character length.  If so, process
156         the character length.
158         PR fortran/18803
159         PR fortran/25669
160         PR fortran/26834
161         * trans_intrinsic.c (gfc_walk_intrinsic_bound): Set
162         data.info.dimen for bound intrinsics.
163         * trans_array.c (gfc_conv_ss_startstride): Pick out LBOUND and
164         UBOUND intrinsics and supply their shape information to the ss
165         and the loop.
167         PR fortran/27124
168         * trans_expr.c (gfc_trans_function_call):  Add a new block, post,
169         in to which all the argument post blocks are put.  Add this block
170         to se->pre after a byref call or to se->post, otherwise.
172 2006-04-14  Roger Sayle  <roger@eyesopen.com>
174         * trans-io.c (set_string): Use fold_build2 and build_int_cst instead
175         of build2 and convert to construct "x < 0" rather than "x <= -1".
177 2006-04-13  Richard Henderson  <rth@redhat.com>
179         * trans-openmp.c (gfc_trans_omp_sections): Adjust for changed
180         number of operands to OMP_SECTIONS.
182 2006-04-08  Kazu Hirata  <kazu@codesourcery.com>
184         * gfortran.texi: Fix typos.  Follow spelling conventions.
185         * resolve.c, trans-expr.c, trans-stmt.c: Fix comment typos.
186         Follow spelling conventions.
188 2006-04-05  Roger Sayle  <roger@eyesopen.com>
190         * dependency.c (get_no_elements): Delete function.
191         (get_deps): Delete function.
192         (transform_sections): Delete function.
193         (gfc_check_section_vs_section): Significant rewrite.
195 2006-04-04  H.J. Lu  <hongjiu.lu@intel.com>
197         PR fortran/25619
198         * trans-array.c (gfc_conv_expr_descriptor): Only dereference
199         character pointer when copying temporary.
201         PR fortran/23634
202         * trans-array.c (gfc_conv_expr_descriptor): Properly copy
203         temporary character with non constant size.
205 2006-04-03  Paul Thomas  <pault@gcc.gnu.org>
207         PR fortran/26891
208         * trans.h: Prototype for gfc_conv_missing_dummy.
209         * trans-expr (gfc_conv_missing_dummy): New function
210         (gfc_conv_function_call): Call it and tidy up some of the code.
211         * trans-intrinsic (gfc_conv_intrinsic_function_args): The same.
213         PR fortran/26976
214         * array.c (gfc_array_dimen_size): If available, return shape[dimen].
215         * resolve.c (resolve_function): If available, use the argument
216         shape for the function expression.
217         * iresolve.c (gfc_resolve_transfer): Set shape[0] = size.
219 2006-04-02  Erik Edelmann  <eedelman@gcc.gnu.org>
221         * trans-array.c (gfc_trans_dealloc_allocated): Take a
222         tree representation of the array to be deallocated as argument
223         instead of its gfc_symbol.
224         (gfc_trans_deferred_array): Update call to
225         gfc_trans_dealloc_allocated.
226         * trans-array.h (gfc_trans_dealloc_allocated): Update
227         prototype.
228         * trans-expr.c (gfc_conv_function_call): Update call to
229         gfc_trans_dealloc_allocated, get indirect reference to dummy
230         arguments.
232 2006-04-01  Roger Sayle  <roger@eyesopen.com>
234         PR fortran/25270
235         * trans-array.c (gfc_trans_allocate_array_storage): In array index
236         calculations use gfc_index_zero_node and gfc_index_one_node instead
237         of integer_zero_node and integer_one_node respectively.
238         (gfc_conv_array_transpose): Likewise.
239         (gfc_conv_ss_startstride): Likewise.
240         (gfc_trans_dummy_array_bias): Likewise.
242 2006-04-01  Roger Sayle  <roger@eyesopen.com>
244         * dependency.c (gfc_is_inside_range): Delete.
245         (gfc_check_element_vs_section): Significant rewrite.
247 2006-04-01  Roger Sayle  <roger@eyesopen.com>
249         * dependency.c (gfc_dep_compare_expr): Strip parentheses and unary
250         plus operators when comparing expressions.  Handle comparisons of
251         the form "X+C vs. X", "X vs. X+C", "X-C vs. X" and "X vs. X-C" where
252         C is an integer constant.  Handle comparisons of the form "P+Q vs.
253         R+S" and "P-Q vs. R-S".  Handle comparisons of integral extensions
254         specially (increasing functions) so extend(A) > extend(B), when A>B.
255         (gfc_check_element_vs_element): Move test later, so that we ignore
256         the fact that "A < B" or "A > B" when A or B contains a forall index.
258 2006-03-31  Asher Langton  <langton2@llnl.gov>
260         PR fortran/25358
261         * expr.c (gfc_check_assign): Allow cray pointee to be assumes-size.
262         
263 2006-03-30  Paul Thomas <paulthomas2@wanadoo.fr>
264             Bud Davis  <bdavis9659@sbcglobal.net>
266         PR 21130
267         * module.c (load_needed): Traverse entire tree before returning.
269 2006-03-30  Roger Sayle  <roger@eyesopen.com>
271         PR middle-end/22375
272         * trans.c (gfc_trans_runtime_check): Promote the arguments of
273         __builtin_expect to the correct types, and the result back to
274         boolean_type_node.
276 2006-03-29  Carlos O'Donell  <carlos@codesourcery.com>
278         * Make-lang.in: Rename docdir to gcc_docdir.
280 2006-03-28  Steven G. Kargl  <kargls@comcast.net>
282         * intrinsic.texi: s/floor/float in previous commit.
284 2006-03-28 Paul Thomas <pault@gcc.gnu.org>
286         PR fortran/26779
287         * resolve.c (resolve_fl_procedure): Do not check the access of
288         derived types for internal procedures.
290 2006-03-27  Jakub Jelinek  <jakub@redhat.com>
292         * io.c (check_io_constraints): Don't look at
293         dt->advance->value.charater.string, unless it is a CHARACTER
294         constant.
296         * f95-lang.c (gfc_get_alias_set): New function.
297         (LANG_HOOKS_GET_ALIAS_SET): Define.
299 2006-03-25  Steven G. Kargl  <kargls@comcast.net>
301         PR fortran/26816
302         * intrinsic.c (add_functions): Allow FLOAT to accept all integer kinds.
303         * intrinsic.texi: Document FLOAT.
305 2006-03-25  Thomas Koenig  <Thomas.Koenig@online.de>
307         PR fortran/26769
308         * iresolve.c (gfc_resolve_reshape):  Remove doubling of
309         kind for complex. For real(kind=10), call reshape_r10.
310         (gfc_resolve_transpose):  For real(kind=10), call
311         transpose_r10.
313 2006-03-25  Roger Sayle  <roger@eyesopen.com>
315         * dependency.c (gfc_check_dependency): Improve handling of pointers;
316         Two variables of different types can't have a dependency, and two
317         variables with the same symbol are equal, even if pointers.
319 2006-03-24  Roger Sayle  <roger@eyesopen.com>
321         * gfortran.h (gfc_symbol): Add a new "forall_index" bit field.
322         * match.c (match_forall_iterator): Set forall_index field on
323         the iteration variable's symbol.
324         * dependency.c (contains_forall_index_p): New function to
325         traverse a gfc_expr to check whether it contains a variable
326         with forall_index set in it's symbol.
327         (gfc_check_element_vs_element): Return GFC_DEP_EQUAL for scalar
328         constant expressions that don't variables used as FORALL indices.
330 2006-03-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
332         PR driver/22600
333         * error.c (gfc_fatal_error): Return ICE_EXIT_CODE instead of 4.
335 2006-03-22  Thomas Koenig  <Thomas.Koenig@online.de>
337         PR fortran/19303
338         * gfortran.h (gfc_option_t):  Add record_marker.
339         * lang.opt:  Add -frecord-marker=4 and -frecord-marker=8.
340         * trans-decl.c:  Add gfor_fndecl_set_record_marker.
341         (gfc_build_builtin_function_decls): Set
342         gfor_fndecl_set_record_marker.
343         (gfc_generate_function_code):  If we are in the main program
344         and -frecord-marker was provided, call set_record_marker.
345         * options.c (gfc_handle_option):  Add handling for
346         -frecord-marker=4 and -frecord-marker=8.
347         * invoke.texi:  Document -frecord-marker.
349 2006-03-22  Paul Thomas  <pault@gcc.gnu.org>
351         PR fortran/17298
352         * trans-intrinsic.c (gfc_conv_intrinsic_array_transfer): New
353         function to implement array valued TRANSFER intrinsic.
354         (gfc_conv_intrinsic_function): Call the new function if TRANSFER
355         and non-null se->ss.
356         (gfc_walk_intrinsic_function): Treat TRANSFER as one of the
357         special cases by calling gfc_walk_intrinsic_libfunc directly.
359 2006-03-21  Toon Moene  <toon@moene.indiv.nluug.nl>
361         * options.c (gfc_init_options): Initialize
362         flag_argument_noalias to 3.
364 2006-03-20  Thomas Koenig  <Thomas.Koenig@online.de>
366         PR fortran/20935
367         * iresolve.c (gfc_resolve_maxloc):   If mask is scalar,
368         prefix the function name with an "s".  If the mask is scalar
369         or if its kind is smaller than gfc_default_logical_kind,
370         coerce it to default kind.
371         (gfc_resolve_maxval):  Likewise.
372         (gfc_resolve_minloc):  Likewise.
373         (gfc_resolve_minval):  Likewise.
374         (gfc_resolve_product):  Likewise.
375         (gfc_resolve_sum):  Likewise.
377 2006-03-19  Paul Thomas  <pault@gcc.gnu.org>
379         PR fortran/26741
380         *expr.c (external_spec_function): Permit elemental functions.
382         PR fortran/26716
383         *interface.c (compare_actual_formal): Detect call for procedure
384         usage and require rank checking, in this case, for assumed shape
385         and deferred shape arrays.
386         (gfc_procedure_use): Revert to pre-PR25070 call to
387         compare_actual_formal that does not require rank checking..
389 2006-03-16  Roger Sayle  <roger@eyesopen.com>
391         * gfortran.h (gfc_equiv_info): Add length field.
392         * trans-common.c (copy_equiv_list_to_ns): Set the length field.
393         * dependency.c (gfc_are_equivalenced_arrays): Use both the offset
394         and length fields to determine whether the two equivalenced symbols
395         overlap in memory.
397 2006-03-14  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
399         PR fortran/19101
400         * gfortran.h: Add warn_ampersand.
401         * invoke.texi: Add documentation for new option.
402         * lang.opt: Add Wampersand.
403         * options.c (gfc_init_options): Initialize warn_ampersand.
404         (gfc_post_options): Set the warn if pedantic.
405         (set_Wall): Set warn_ampersand.
406         (gfc_handle_option: Add Wampersand for itself, -std=f95, and -std=f2003.
407         * scanner.c (gfc_next_char_literal): Add test for missing '&' in
408         continued character constant and give warning if missing.
410 2006-03-14  Steven G. Kargl  <kargls@comcast.net>
412         PR 18537
413         * gfortran.h: Wrap Copyright line.
414         (gfc_option_t): add warn_tabs member.
415         * lang.opt: Update Coyright year.  Add the Wtabs.
416         * invoke.texi: Document -Wtabs.
417         * scanner.c (gfc_gobble_whitespace): Use warn_tabs.  Add linenum to
418         suppress multiple warnings.
419         (load_line): Use warn_tabs.  Add linenum, current_line, seen_comment
420         to suppress multiple warnings.
421         * options.c (gfc_init_options): Initialize warn_tabs.
422         (set_Wall): set warn_tabs for -Wall.
423         (gfc_post_options): Adjust flag_tabs depending on -pedantic.
424         (gfc_handle_option):  Process command-line option -W[no-]tabs
426 2006-03-13  Paul Thomas  <pault@gcc.gnu.org>
428         PR fortran/25378
429         * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): Set the initial position to zero and
430         modify the condition for updating it, to implement the F2003 requirement for all(mask)
431         is false.
433 2006-03-13  Jakub Jelinek  <jakub@redhat.com>
435         * trans-openmp.c (gfc_trans_omp_variable): Handle references
436         to parent result.
437         * trans-expr.c (gfc_conv_variable): Remove useless setting
438         of parent_flag, formatting.
440         * trans-decl.c (gfc_get_fake_result_decl): Re-add setting of
441         GFC_DECL_RESULT flag.
443 2003-03-11  Roger Sayle  <roger@eyesopen.com>
445         * dependency.c (gfc_dep_compare_expr) <EXPR_OP>: Allow unary and
446         binary operators to compare equal if their operands are equal.
447         <EXPR_FUNCTION>: Allow "constant" intrinsic conversion functions
448         to compare equal, if their operands are equal.
450 2006-03-11  Erik Edelmann  <eedelman@gcc.gnu.org>
452         * symbol.c (check_conflict): Allow allocatable function results,
453         except for elemental functions.
454         * trans-array.c (gfc_trans_allocate_temp_array): Rename to ...
455         (gfc_trans_create_temp_array): ... this, and add new argument
456         callee_alloc.
457         (gfc_trans_array_constructor, gfc_conv_loop_setup): Update call
458         to gfc_trans_allocate_temp_array.
459         * trans-array.h (gfc_trans_allocate_temp_array): Update prototype.
460         * trans-expr.c (gfc_conv_function_call): Use new arg of
461         gfc_trans_create_temp_array avoid pre-allocation of temporary
462         result variables of pointer AND allocatable functions.
463         (gfc_trans_arrayfunc_assign): Return NULL for allocatable
464         functions.
465         * resolve.c (resolve_symbol): Copy value of 'allocatable' attribute
466         from sym->result to sym.
468 2006-03-09  Erik Edelmann  <eedelman@gcc.gnu.org>
470         * trans-expr.c (gfc_add_interface_mapping): Copy 'allocatable'
471         attribute from sym to new_sym.  Call build_fold_indirect_ref()
472         for allocatable arguments.
474 2006-03-09 Paul Thomas <pault@gcc.gnu.org>
476         PR fortran/26257
477         * trans-array.c (gfc_conv_expr_descriptor): Exclude calculation of
478         the offset and data when se->data_not_needed is set.
479         * trans.h: Include the data_not_need bit in gfc_se.
480         * trans-intrinsic.c (gfc_conv_intrinsic_size): Set it for SIZE.
482 2006-03-06  Paul Thomas  <pault@gcc.gnu.org>
483             Erik Edelmann  <eedelman@gcc.gnu.org>
485         * trans-array.c (gfc_trans_dealloc_allocated): New function.
486         (gfc_trans_deferred_array): Use it, instead of inline code.
487         * trans-array.h: Prototype for gfc_trans_dealloc_allocated().
488         * trans-expr.c (gfc_conv_function_call): Deallocate allocated
489         ALLOCATABLE, INTENT(OUT) arguments upon procedure entry.
491 2006-03-06  Paul Thomas  <pault@gcc.gnu.org>
493         PR fortran/26107
494         * resolve.c (resolve_function): Add name after test for pureness.
496         PR fortran/19546
497         * trans-expr.c (gfc_conv_variable): Detect reference to parent result,
498         store current_function_decl, replace with parent, whilst calls are
499         made to gfc_get_fake_result_decl, and restore afterwards. Signal this
500         to gfc_get_fake_result_decl with a new argument, parent_flag.
501         * trans-stmt.c (gfc_trans_return): gfc_get_fake_result_decl 2nd arg
502         is set to zero.
503         * trans.h: Add parent_flag to gfc_get_fake_result_decl prototype.
504         * trans-decl.c (gfc_get_fake_result_decl): On parent_flag, being set,
505         add decl to parent function. Replace refs to current_fake_result_decl
506         with refs to this_result_decl.
507         (gfc_generate_function_code): Null parent_fake_result_decl before the
508         translation of code for contained procedures. Set parent_flag to zero
509         in call to gfc_get_fake_result_decl.
510         * trans-intrinsic.c (gfc_conv_intrinsic_len): The same.
512 2006-03-05  Steven G. Kargl  <kargls@comcast.net>
514         * simplify.c (gfc_simplify_verify):  Fix return when SET=''.
516 2006-03-05  Erik Edelmann  <eedelman@gcc.gnu.org>
518         PR fortran/16136
519         * symbol.c (conf_std): New macro.
520         (check_conflict): Use it to allow ALLOCATABLE dummy
521         arguments for F2003.
522         * trans-expr.c (gfc_conv_function_call): Pass the
523         address of the array descriptor when dummy argument is
524         ALLOCATABLE.
525         * interface.c (compare_allocatable): New function.
526         (compare_actual_formal): Use it.
527         * resolve.c (resolve_deallocate_expr,
528         resolve_allocate_expr): Check that INTENT(IN) variables
529         aren't (de)allocated.
530         * gfortran.texi (Fortran 2003 status): List ALLOCATABLE
531         dummy arguments as supported.
533 2006-03-03  Roger Sayle  <roger@eyesopen.com>
535         * dependency.c (gfc_check_element_vs_element): Revert last change.
537 2006-03-03  Roger Sayle  <roger@eyesopen.com>
539         * dependency.c (gfc_check_element_vs_element): Consider two
540         unordered scalar subscripts as (potentially) equal.
542 2006-03-03  Roger Sayle  <roger@eyesopen.com>
544         * dependency.c (gfc_check_dependency): Call gfc_dep_resolver to
545         check whether two array references have a dependency.
546         (gfc_check_element_vs_element): Assume lref and rref must be
547         REF_ARRAYs.  If gfc_dep_compare_expr returns -2, assume these
548         references could potentially overlap.
549         (gfc_dep_resolver): Whitespace and comment tweaks.  Assume a
550         dependency if the references have different depths.  Rewrite
551         final term to clarrify we only have a dependency for overlaps.
553 2006-03-03  Thomas Koenig  <Thomas.Koenig@online.de>
555         PR fortran/25031
556         * trans-array.h:  Adjust gfc_array_allocate prototype.
557         * trans-array.c (gfc_array_allocate):  Change type of
558         gfc_array_allocatate to bool.  Function returns true if
559         it operates on an array.  Change second argument to gfc_expr.
560         Find last reference in chain.
561         If the function operates on an allocatable array, emit call to
562         allocate_array() or allocate64_array().
563         * trans-stmt.c (gfc_trans_allocate):  Code to follow to last
564         reference has been moved to gfc_array_allocate.
565         * trans.h:  Add declaration for gfor_fndecl_allocate_array and
566         gfor_fndecl_allocate64_array.
567         (gfc_build_builtin_function_decls):  Add gfor_fndecl_allocate_array
568         and gfor_fndecl_allocate64_array.
570 2006-03-01  Roger Sayle  <roger@eyesopen.com>
572         * trans-stmt.c (generate_loop_for_temp_to_lhs): Add an additional
573         INVERT argument to invert the sense of the WHEREMASK argument.
574         Remove unneeded code to AND together a list of masks.
575         (generate_loop_for_rhs_to_temp): Likewise.
576         (gfc_trans_assign_need_temp): Likewise.
577         (gfc_trans_forall_1): Likewise.
578         (gfc_evaluate_where_mask): Likewise, add a new INVERT argument
579         to specify the sense of the MASK argument.
580         (gfc_trans_where_assign): Likewise.
581         (gfc_trans_where_2): Likewise.  Restructure code that decides
582         whether we need to allocate zero, one or two temporary masks.
583         If this is a top-level WHERE (i.e. the incoming MASK is NULL),
584         we only need to allocate at most one temporary mask, and can
585         invert it's sense to provide the complementary pending execution
586         mask.  Only calculate the size of the required temporary arrays
587         if we need any.
588         (gfc_trans_where): Update call to gfc_trans_where_2.
590 2006-03-01  Paul Thomas  <pault@gcc.gnu.org>
592         * iresolve.c (gfc_resolve_dot_product):  Remove any difference in
593         treatment of logical types.
594         * trans-intrinsic.c (gfc_conv_intrinsic_dot_product):  New function. 
596         PR fortran/26393
597         * trans-decl.c (gfc_get_symbol_decl): Extend condition that symbols
598         must be referenced to include unreferenced symbols in an interface
599         body. 
601         PR fortran/20938
602         * trans-array.c (gfc_conv_resolve_dependencies): Add call to
603         gfc_are_equivalenced_arrays.
604         * symbol.c (gfc_free_equiv_infos, gfc_free_equiv_lists): New
605         functions. (gfc_free_namespace): Call them.
606         * trans-common.c (copy_equiv_list_to_ns): New function.
607         (add_equivalences): Call it.
608         * gfortran.h: Add equiv_lists to gfc_namespace and define
609         gfc_equiv_list and gfc_equiv_info.
610         * dependency.c (gfc_are_equivalenced_arrays): New function.
611         (gfc_check_dependency): Call it.
612         * dependency.h: Prototype for gfc_are_equivalenced_arrays.
614 2006-03-01  Roger Sayle  <roger@eyesopen.com>
616         * dependency.c (gfc_is_same_range): Compare the stride, lower and
617         upper bounds when testing array reference ranges for equality.
618         (gfc_check_dependency): Fix indentation whitespace.
619         (gfc_check_element_vs_element): Likewise.
620         (gfc_dep_resolver): Likewise.
622 2006-02-28  Thomas Koenig  <Thomas.Koenig@online.de>
624         * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc):
625         If the mask expression exists and has rank 0, enclose the
626         generated loop in an "if (mask)".  Put the default
627         initialization into the else branch.
629 2006-02-25  Thomas Koenig  <Thomas.Koenig@online.de>
631         PR fortran/23092
632         * trans-intrinsic.c (gfc_conv_intrinsic_arith):  If the
633         mask expression exists and has rank 0, enclose the generated
634         loop in an "if (mask)".
635         * (gfc_conv_intrinsic_minmaxloc):  Likewise.
637 2006-02-24  Paul Thomas  <pault@gcc.gnu.org>
639         PR fortran/26409
640         * resolve.c (resolve_contained_functions, resolve_types,
641         gfc_resolve): Revert patch of 2006-02-19.
643 2006-02-24  Paul Thomas  <pault@gcc.gnu.org>
645         PR fortran/24519
646         * dependency.c (gfc_is_same_range): Correct typo.
647         (gfc_check_section_vs_section): Call gfc_is_same_range.
649         PR fortran/25395
650         * trans-common.c (add_equivalences): Add a new flag that is set when
651         an equivalence is seen that prevents more from being reset until the
652         start of a new traversal of the list, thus ensuring completion of
653         all the equivalences.
655 2006-02-23  Erik Edelmann  <eedelman@gcc.gnu.org>
657         * module.c (read_module): Remove redundant code lines.
659 2006-02-20 Rafael �Ávila de Esp�índola <rafael.espindola@gmail.com>
660         * Make-lang.in (FORTRAN): Remove
661         (.PHONY): Remove F95 and f95. Add fortran
663 2006-02-20  Roger Sayle  <roger@eyesopen.com>
665         * trans-stmt.c (gfc_trans_where_2): Avoid updating unused current
666         execution mask for empty WHERE/ELSEWHERE clauses.  Don't allocate
667         temporary mask arrays if they won't be used.
669 2006-02-20  Roger Sayle  <roger@eyesopen.com>
671         * trans-stmt.c (gfc_trans_where_assign): Remove code to handle
672         traversing a linked list of MASKs.  The MASK is now always a
673         single element requiring no ANDing during the assignment.
675 2006-02-19  Thomas Koenig  <Thomas.Koenig@online.de>
677         * gfortran.texi:  Document environment variables which
678         influence runtime behavior.
680 2006-02-19  H.J. Lu  <hongjiu.lu@intel.com>
682         * resolve.c (resolve_contained_functions): Call resolve_entries
683         first.
684         (resolve_types): Remove calls to resolve_entries and
685         resolve_contained_functions.
686         (gfc_resolve): Call resolve_contained_functions.
688 2006-02-19  Erik Edelmann  <eedelman@gcc.gnu.org>
690         PR fortran/26201
691         * intrinsic.c (gfc_convert_type_warn): Call
692         gfc_intrinsic_symbol() on the newly created symbol.
694 2006-02-19  Paul Thomas  <pault@gcc.gnu.org>
696         PR fortran/25054
697         * resolve.c (is_non_constant_shape_array): New function.
698         (resolve_fl_variable): Remove code for the new function and call it.
699         (resolve_fl_namelist): New function.  Add test for namelist array
700         with non-constant shape, using is_non_constant_shape_array.
701         (resolve_symbol): Remove code for resolve_fl_namelist and call it.
703         PR fortran/25089
704         * match.c (match_namelist): Increment the refs field of an accepted
705         namelist object symbol.
706         * resolve.c (resolve_fl_namelist): Test namelist objects for a conflict
707         with contained or module procedures.
709 2006-02-18  Roger Sayle  <roger@eyesopen.com>
711         * trans-stmt.c (struct temporary_list): Delete.
712         (gfc_trans_where_2): Major reorganization.  Remove no longer needed
713         TEMP argument.  Allocate and deallocate the control mask and
714         pending control mask locally.
715         (gfc_trans_forall_1): Delete TEMP local variable, and update
716         call to gfc_trans_where_2.  No need to deallocate arrays after.
717         (gfc_evaluate_where_mask): Major reorganization.  Change return
718         type to void.  Pass in parent execution mask, MASK, and two
719         already allocated mask arrays CMASK and PMASK.  On return
720         CMASK := MASK & COND, PMASK := MASK & !COND.  MASK, CMASK and
721         CMASK may all be NULL, or refer to the same temporary arrays.
722         (gfc_trans_where): Update call to gfc_trans_where_2.  We no
723         longer need a TEMP variable or to deallocate temporary arrays
724         allocated by gfc_trans_where_2.
726 2006-02-18   Danny Smith  <dannysmith@users.sourceforeg.net>
728         * gfortran.h (gfc_add_attribute): Change uint to unsigned int.
729         * symbol.c (gfc_add_attribute): Likewise for definition.
730         * resolve.c (resolve_global_procedure): Likewise for variable 'type'.
732 2006-02-17  Richard Sandiford  <richard@codesourcery.com>
734         * trans-common.c: Include rtl.h earlier.
735         * trans-decl.c: Likewise.
737 2006-02-16  Jakub Jelinek  <jakub@redhat.com>
739         PR fortran/26224
740         * parse.c (parse_omp_do, parse_omp_structured_block): Call
741         gfc_commit_symbols and gfc_warning_check.
743         * openmp.c (resolve_omp_clauses): Add a dummy case label to workaround
744         PR middle-end/26316.
746 2006-02-16  Paul Thomas  <pault@gcc.gnu.org>
748         PR fortran/24557
749         * trans-expr.c (gfc_add_interface_mapping): Use the actual argument
750         for character(*) arrays, rather than casting to the type and kind
751         parameters of the formal argument.
753 2006-02-15  Toon Moene  <toon@moene.indiv.nluug.nl>
755         PR fortran/26054
756         * options.c: Do not warn for Fortran 2003 features by default.
758 2006-02-15  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
760         * check.c: Update copyright years.
761         
762         * check.c (gfc_check_minloc_maxloc, check_reduction): Don't call
763         dim_range_check on not-present optional dim argument.
765 2006-02-15  Jakub Jelinek  <jakub@redhat.com>
767         PR libgomp/25938
768         PR libgomp/25984
769         * Make-lang.in (install-finclude-dir): New goal.
770         (fortran.install-common): Depend on install-finclude-dir.
771         * lang-specs.h: If not -nostdinc, add -I finclude.
773 2006-02-14  Thomas Koenig  <Thomas.Koenig@online.de>
775         PR fortran/25045
776         * check.c (dim_check):  Perform all checks if dim is optional.
777         (gfc_check_minloc_maxloc):  Use dim_check and dim_rank_check
778         to check dim argument.
779         (check_reduction):  Likewise.
781 2006-02-14  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
783         PR fortran/26277
784         * io.c (match_ltag): Mark label as referenced.
786 2006-02-14  Jakub Jelinek  <jakub@redhat.com>
787             Richard Henderson  <rth@redhat.com>
788             Diego Novillo  <dnovillo@redhat.com>
790         * invoke.texi: Document -fopenmp.
791         * gfortran.texi (Extensions): Document OpenMP.
793         Backport from gomp-20050608-branch
794         * trans-openmp.c: Call build_omp_clause instead of
795         make_node when creating OMP_CLAUSE_* trees.
796         (gfc_trans_omp_reduction_list): Remove argument 'code'.
797         Adjust all callers.
799         * trans.h (build4_v): Define.
800         * trans-openmp.c: Call build4_v to create OMP_PARALLEL nodes.
801         Call build3_v to create OMP_SECTIONS nodes.
803         PR fortran/25162
804         * openmp.c (gfc_match_omp_variable_list): Call gfc_set_sym_referenced
805         on all symbols added to the variable list.
807         * openmp.c (gfc_match_omp_clauses): Fix check for non-INTRINSIC
808         procedure symbol in REDUCTION.
810         * trans-openmp.c (gfc_trans_omp_array_reduction): Use gfc_add
811         for MINUS_EXPR OMP_CLAUSE_REDUCTION_CODE.
813         * trans-openmp.c (gfc_trans_omp_do): Add PBLOCK argument.  If PBLOCK
814         is non-NULL, evaluate INIT/COND/INCR and chunk size expressions in
815         that statement block.
816         (gfc_trans_omp_parallel_do): Pass non-NULL PBLOCK to gfc_trans_omp_do
817         for non-ordered non-static combined loops.
818         (gfc_trans_omp_directive): Pass NULL PBLOCK to gfc_trans_omp_do.
820         * openmp.c: Include target.h and toplev.h.
821         (gfc_match_omp_threadprivate): Emit diagnostic if target does
822         not support TLS.
823         * Make-lang.in (fortran/openmp.o): Add dependencies on
824         target.h and toplev.h.
826         * trans-decl.c (gfc_get_fake_result_decl): Set GFC_DECL_RESULT.
827         * trans-openmp.c (gfc_omp_privatize_by_reference): Make
828         DECL_ARTIFICIAL vars predetermined shared except GFC_DECL_RESULT.
829         (gfc_omp_disregard_value_expr): Handle GFC_DECL_RESULT.
830         (gfc_trans_omp_variable): New function.
831         (gfc_trans_omp_variable_list, gfc_trans_omp_reduction_list): Use it.
832         * trans.h (GFC_DECL_RESULT): Define.
834         * trans-openmp.c (gfc_omp_firstprivatize_type_sizes): New function.
835         * f95-lang.c (LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES): Define.
836         * trans.h (gfc_omp_firstprivatize_type_sizes): New prototype.
838         * trans-openmp.c (gfc_omp_privatize_by_reference): Return
839         true if a pointer has GFC_DECL_SAVED_DESCRIPTOR set.
840         (gfc_trans_omp_array_reduction, gfc_trans_omp_reduction_list): New
841         functions.
842         (gfc_trans_omp_clauses): Add WHERE argument.  Call
843         gfc_trans_omp_reduction_list rather than gfc_trans_omp_variable_list
844         for reductions.
845         (gfc_trans_omp_do, gfc_trans_omp_parallel, gfc_trans_omp_parallel_do,
846         gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare,
847         gfc_trans_omp_sections, gfc_trans_omp_single): Adjust
848         gfc_trans_omp_clauses callers.
850         * openmp.c (omp_current_do_code): New var.
851         (gfc_resolve_omp_do_blocks): New function.
852         (gfc_resolve_omp_parallel_blocks): Call it.
853         (gfc_resolve_do_iterator): Add CODE argument.  Don't propagate
854         predetermination if argument is !$omp do or !$omp parallel do
855         iteration variable.
856         * resolve.c (resolve_code): Call gfc_resolve_omp_do_blocks
857         for EXEC_OMP_DO.  Adjust gfc_resolve_do_iterator caller.
858         * fortran.h (gfc_resolve_omp_do_blocks): New prototype.
859         (gfc_resolve_do_iterator): Add CODE argument.
861         * trans.h (gfc_omp_predetermined_sharing,
862         gfc_omp_disregard_value_expr, gfc_omp_private_debug_clause): New
863         prototypes.
864         (GFC_DECL_COMMON_OR_EQUIV, GFC_DECL_CRAY_POINTEE): Define.
865         * trans-openmp.c (gfc_omp_predetermined_sharing,
866         gfc_omp_disregard_value_expr, gfc_omp_private_debug_clause): New
867         functions.
868         * trans-common.c (build_equiv_decl, build_common_decl,
869         create_common): Set GFC_DECL_COMMON_OR_EQUIV flag on the decls.
870         * trans-decl.c (gfc_finish_cray_pointee): Set GFC_DECL_CRAY_POINTEE
871         on the decl.
872         * f95-lang.c (LANG_HOOKS_OMP_PREDETERMINED_SHARING,
873         LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR,
874         LANG_HOOKS_OMP_PRIVATE_DEBUG_CLAUSE): Define.
876         * openmp.c (resolve_omp_clauses): Remove extraneous comma.
878         * symbol.c (check_conflict): Add conflict between cray_pointee and
879         threadprivate.
880         * openmp.c (gfc_match_omp_threadprivate): Fail if
881         gfc_add_threadprivate returned FAILURE.
882         (resolve_omp_clauses): Diagnose Cray pointees in SHARED,
883         {,FIRST,LAST}PRIVATE and REDUCTION clauses and Cray pointers in
884         {FIRST,LAST}PRIVATE and REDUCTION clauses.
886         * resolve.c (omp_workshare_flag): New variable.
887         (resolve_function): Diagnose use of non-ELEMENTAL user defined
888         function in WORKSHARE construct.
889         (resolve_code): Cleanup forall_save use.  Make sure omp_workshare_flag
890         is set to correct value in different contexts.
892         * openmp.c (resolve_omp_clauses): Replace %s with '%s' when printing
893         variable name.
894         (resolve_omp_atomic): Likewise.
896         PR fortran/24493
897         * scanner.c (skip_free_comments): Set at_bol at the beginning of the
898         loop, not before it.
899         (skip_fixed_comments): Handle ! comments in the middle of line here
900         as well.
901         (gfc_skip_comments): Use skip_fixed_comments for FIXED_FORM even if
902         not at BOL.
903         (gfc_next_char_literal): Fix expected canonicalized *$omp string.
905         * trans-openmp.c (gfc_trans_omp_do): Use make_node and explicit
906         initialization to build OMP_FOR instead of build.
908         * trans-decl.c (gfc_gimplify_function): Invoke
909         diagnose_omp_structured_block_errors.
911         * trans-openmp.c (gfc_trans_omp_master): Use OMP_MASTER.
912         (gfc_trans_omp_ordered): Use OMP_ORDERED.
914         * gfortran.h (gfc_resolve_do_iterator, gfc_resolve_blocks,
915         gfc_resolve_omp_parallel_blocks): New prototypes.
916         * resolve.c (resolve_blocks): Renamed to...
917         (gfc_resolve_blocks): ... this.  Remove static.
918         (gfc_resolve_forall): Adjust caller.
919         (resolve_code): Only call gfc_resolve_blocks if code->block != 0
920         and not for EXEC_OMP_PARALLEL* directives.  Call
921         gfc_resolve_omp_parallel_blocks for EXEC_OMP_PARALLEL* directives.
922         Call gfc_resolve_do_iterator if resolved successfully EXEC_DO
923         iterator.
924         * openmp.c: Include pointer-set.h.
925         (omp_current_ctx): New variable.
926         (gfc_resolve_omp_parallel_blocks, gfc_resolve_do_iterator): New
927         functions.
928         * Make-lang.in (fortran/openmp.o): Depend on pointer-set.h.
930         * openmp.c (gfc_match_omp_clauses): For max/min/iand/ior/ieor,
931         look up symbol if it exists, use its name instead and, if it is not
932         INTRINSIC, issue diagnostics.
934         * parse.c (parse_omp_do): Handle implied end do properly.
935         (parse_executable): If parse_omp_do returned ST_IMPLIED_ENDDO,
936         return it instead of continuing.
938         * trans-openmp.c (gfc_trans_omp_critical): Update for changed
939         operand numbering.
940         (gfc_trans_omp_do, gfc_trans_omp_parallel, gfc_trans_omp_parallel_do,
941         gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare,
942         gfc_trans_omp_sections, gfc_trans_omp_single): Likewise.
944         * trans.h (gfc_omp_privatize_by_reference): New prototype.
945         * f95-lang.c (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Redefine
946         to gfc_omp_privatize_by_reference.
947         * trans-openmp.c (gfc_omp_privatize_by_reference): New function.
949         * trans-stmt.h (gfc_trans_omp_directive): Add comment.
951         * openmp.c (gfc_match_omp_variable_list): Add ALLOW_COMMON argument.
952         Disallow COMMON matching if it is set.
953         (gfc_match_omp_clauses, gfc_match_omp_flush): Adjust all callers.
954         (resolve_omp_clauses): Show locus in error messages.  Check that
955         variable types in reduction clauses are appropriate for reduction
956         operators.
958         * resolve.c (resolve_symbol): Don't error if a threadprivate module
959         variable isn't SAVEd.
961         * trans-openmp.c (gfc_trans_omp_do): Put count into BLOCK, not BODY.
962         Fix typo in condition.  Fix DOVAR initialization.
964         * openmp.c (gfc_match_omp_clauses): Match min/iand/ior/ieor
965         rather than .min. etc.
967         * trans-openmpc.c (omp_not_yet): Remove.
968         (gfc_trans_omp_parallel_do): Keep listprivate clause on parallel.
969         Force creation of BIND_EXPR around the workshare construct.
970         (gfc_trans_omp_parallel_sections): Likewise.
971         (gfc_trans_omp_parallel_workshare): Likewise.
973         * types.def (BT_I16, BT_FN_I16_VPTR_I16,
974         BT_FN_BOOL_VPTR_I16_I16, BT_FN_I16_VPTR_I16_I16): Add.
976         * trans-openmp.c (gfc_trans_omp_clauses): Create OMP_CLAUSE_DEFAULT.
977         (gfc_trans_omp_code): New function.
978         (gfc_trans_omp_do): Use it, remove omp_not_yet uses.
979         (gfc_trans_omp_parallel, gfc_trans_omp_single): Likewise.
980         (gfc_trans_omp_sections): Likewise.  Only treat empty last section
981         specially if lastprivate clause is present.
982         * f95-lang.c (gfc_init_builtin_functions): Create BUILT_IN_TRAP
983         builtin.
985         * trans-openmp.c (gfc_trans_omp_variable_list): Update for
986         OMP_CLAUSE_DECL name change.
987         (gfc_trans_omp_do): Likewise.
989         * trans-openmp.c (gfc_trans_omp_clauses): Create OMP_CLAUSE_REDUCTION
990         clauses.
991         (gfc_trans_omp_atomic): Build OMP_ATOMIC instead of expanding
992         sync builtins directly.
993         (gfc_trans_omp_single): Build OMP_SINGLE statement.
995         * trans-openmp.c (gfc_trans_add_clause): New.
996         (gfc_trans_omp_variable_list): Take a tree code and build the clause
997         node here.  Link it to the head of a list.
998         (gfc_trans_omp_clauses): Update to match.
999         (gfc_trans_omp_do): Use gfc_trans_add_clause.
1001         * trans-openmp.c (gfc_trans_omp_clauses): Change second argument to
1002         gfc_omp_clauses *.  Use gfc_evaluate_now instead of creating
1003         temporaries by hand.
1004         (gfc_trans_omp_atomic, gfc_trans_omp_critical): Use buildN_v macros.
1005         (gfc_trans_omp_do): New function.
1006         (gfc_trans_omp_master): Dont' check for gfc_trans_code returning NULL.
1007         (gfc_trans_omp_parallel): Adjust gfc_trans_omp_clauses caller.
1008         Use buildN_v macros.
1009         (gfc_trans_omp_parallel_do, gfc_trans_omp_parallel_sections,
1010         gfc_trans_omp_parallel_workshare, gfc_trans_omp_sections,
1011         gfc_trans_omp_single, gfc_trans_omp_workshare): New functions.
1012         (gfc_trans_omp_directive): Use them.
1013         * parse.c (parse_omp_do): Allow new_st.op == EXEC_NOP.
1014         * openmp.c (resolve_omp_clauses): Check for list items present
1015         in multiple clauses.
1016         (resolve_omp_do): Check that iteration variable is not THREADPRIVATE
1017         and is not present in any clause variable lists other than PRIVATE
1018         or LASTPRIVATE.
1020         * gfortran.h (symbol_attribute): Add threadprivate bit.
1021         (gfc_common_head): Add threadprivate member, change use_assoc
1022         and saved into char to save space.
1023         (gfc_add_threadprivate): New prototype.
1024         * symbol.c (check_conflict): Handle threadprivate.
1025         (gfc_add_threadprivate): New function.
1026         (gfc_copy_attr): Copy threadprivate.
1027         * trans-openmp.c (gfc_trans_omp_clauses): Avoid creating a temporary
1028         if IF or NUM_THREADS is constant.  Create OMP_CLAUSE_SCHEDULE and
1029         OMP_CLAUSE_ORDERED.
1030         * resolve.c (resolve_symbol): Complain if a THREADPRIVATE symbol
1031         outside a module and not in COMMON has is not SAVEd.
1032         (resolve_equivalence): Ensure THREADPRIVATE objects don't get
1033         EQUIVALENCEd.
1034         * trans-common.c: Include target.h and rtl.h.
1035         (build_common_decl): Set DECL_TLS_MODEL if THREADPRIVATE.
1036         * trans-decl.c: Include rtl.h.
1037         (gfc_finish_var_decl): Set DECL_TLS_MODEL if THREADPRIVATE.
1038         * dump-parse-tree.c (gfc_show_attr): Handle THREADPRIVATE.
1039         * Make-lang.in (fortran/trans-decl.o): Depend on $(RTL_H).
1040         (fortran/trans-common.o): Depend on $(RTL_H) and $(TARGET_H).
1041         * openmp.c (gfc_match_omp_variable_list): Ensure COMMON block
1042         is from current namespace.
1043         (gfc_match_omp_threadprivate): Rewrite.
1044         (resolve_omp_clauses): Check some clause restrictions.
1045         * module.c (ab_attribute): Add AB_THREADPRIVATE.
1046         (attr_bits): Add THREADPRIVATE.
1047         (mio_symbol_attribute, mio_symbol_attribute): Handle threadprivate.
1048         (load_commons, write_common, write_blank_common): Adjust for type
1049         change of saved, store/load threadprivate bit from the integer
1050         as well.
1052         * types.def (BT_FN_UINT_UINT): New.
1053         (BT_FN_VOID_UINT_UINT): Remove.
1055         * trans-openmp.c (gfc_trans_omp_clauses, gfc_trans_omp_barrier,
1056         gfc_trans_omp_critical, gfc_trans_omp_flush, gfc_trans_omp_master,
1057         gfc_trans_omp_ordered, gfc_trans_omp_parallel): New functions.
1058         (gfc_trans_omp_directive): Use them.
1060         * openmp.c (expr_references_sym): Add SE argument, don't look
1061         into SE tree.
1062         (is_conversion): New function.
1063         (resolve_omp_atomic): Adjust expr_references_sym callers.  Handle
1064         promoted expressions.
1065         * trans-openmp.c (gfc_trans_omp_atomic): New function.
1066         (gfc_trans_omp_directive): Call it.
1068         * f95-lang.c (builtin_type_for_size): New function.
1069         (gfc_init_builtin_functions): Initialize synchronization and
1070         OpenMP builtins.
1071         * types.def: New file.
1072         * Make-lang.in (f95-lang.o): Depend on $(BUILTINS_DEF) and
1073         fortran/types.def.
1075         * trans-openmp.c: Rename GOMP_* tree codes into OMP_*.
1077         * dump-parse-tree.c (show_symtree): Don't crash if ns->proc_name
1078         is NULL.
1080         * dump-parse-tree.c (gfc_show_namelist, gfc_show_omp_node): New
1081         functions.
1082         (gfc_show_code_node): Call gfc_show_omp_node for EXEC_OMP_* nodes.
1084         * parse.c (parse_omp_do): Call pop_state before next_statement.
1085         * openmp.c (expr_references_sym, resolve_omp_atomic, resolve_omp_do):
1086         New functions.
1087         (gfc_resolve_omp_directive): Call them.
1088         * match.c (match_exit_cycle): Issue error if EXIT or CYCLE statement
1089         leaves an OpenMP structured block or if EXIT terminates !$omp do
1090         loop.
1092         * Make-lang.in (F95_PARSER_OBJS): Add fortran/openmp.o.
1093         (F95_OBJS): Add fortran/trans-openmp.o.
1094         (fortran/trans-openmp.o): Depend on $(GFORTRAN_TRANS_DEPS).
1095         * lang.opt: Add -fopenmp option.
1096         * options.c (gfc_init_options): Initialize it.
1097         (gfc_handle_option): Handle it.
1098         * gfortran.h (ST_OMP_ATOMIC, ST_OMP_BARRIER, ST_OMP_CRITICAL,
1099         ST_OMP_END_CRITICAL, ST_OMP_END_DO, ST_OMP_END_MASTER,
1100         ST_OMP_END_ORDERED, ST_OMP_END_PARALLEL, ST_OMP_END_PARALLEL_DO,
1101         ST_OMP_END_PARALLEL_SECTIONS, ST_OMP_END_PARALLEL_WORKSHARE,
1102         ST_OMP_END_SECTIONS, ST_OMP_END_SINGLE, ST_OMP_END_WORKSHARE,
1103         ST_OMP_DO, ST_OMP_FLUSH, ST_OMP_MASTER, ST_OMP_ORDERED,
1104         ST_OMP_PARALLEL, ST_OMP_PARALLEL_DO, ST_OMP_PARALLEL_SECTIONS,
1105         ST_OMP_PARALLEL_WORKSHARE, ST_OMP_SECTIONS, ST_OMP_SECTION,
1106         ST_OMP_SINGLE, ST_OMP_THREADPRIVATE, ST_OMP_WORKSHARE): New
1107         statement codes.
1108         (OMP_LIST_PRIVATE, OMP_LIST_FIRSTPRIVATE, OMP_LIST_LASTPRIVATE,
1109         OMP_LIST_COPYPRIVATE, OMP_LIST_SHARED, OMP_LIST_COPYIN,
1110         OMP_LIST_PLUS, OMP_LIST_REDUCTION_FIRST, OMP_LIST_MULT,
1111         OMP_LIST_SUB, OMP_LIST_AND, OMP_LIST_OR, OMP_LIST_EQV,
1112         OMP_LIST_NEQV, OMP_LIST_MAX, OMP_LIST_MIN, OMP_LIST_IAND,
1113         OMP_LIST_IOR, OMP_LIST_IEOR, OMP_LIST_REDUCTION_LAST, OMP_LIST_NUM):
1114         New OpenMP variable list types.
1115         (gfc_omp_clauses): New typedef.
1116         (gfc_get_omp_clauses): Define.
1117         (EXEC_OMP_CRITICAL, EXEC_OMP_DO, EXEC_OMP_FLUSH, EXEC_OMP_MASTER,
1118         EXEC_OMP_ORDERED, EXEC_OMP_PARALLEL, EXEC_OMP_PARALLEL_DO,
1119         EXEC_OMP_PARALLEL_SECTIONS, EXEC_OMP_PARALLEL_WORKSHARE,
1120         EXEC_OMP_SECTIONS, EXEC_OMP_SINGLE, EXEC_OMP_WORKSHARE,
1121         EXEC_OMP_ATOMIC, EXEC_OMP_BARRIER, EXEC_OMP_END_NOWAIT,
1122         EXEC_OMP_END_SINGLE): New OpenMP gfc_exec_op codes.
1123         (struct gfc_code): Add omp_clauses, omp_name, omp_namelist
1124         and omp_bool fields to ext union.
1125         (flag_openmp): Declare.
1126         (gfc_free_omp_clauses, gfc_resolve_omp_directive): New prototypes.
1127         * scanner.c (openmp_flag, openmp_locus): New variables.
1128         (skip_free_comments, skip_fixed_comments, gfc_next_char_literal):
1129         Handle OpenMP directive lines and conditional compilation magic
1130         comments.
1131         * parse.h (COMP_OMP_STRUCTURED_BLOCK): New compile state.
1132         * parse.c (decode_omp_directive, parse_omp_do, parse_omp_atomic,
1133         parse_omp_structured_block): New functions.
1134         (next_free, next_fixed): Parse OpenMP directives.
1135         (case_executable, case_exec_markers, case_decl): Add ST_OMP_*
1136         codes.
1137         (gfc_ascii_statement): Handle ST_OMP_* codes.
1138         (parse_executable): Rearrange the loop slightly, so that
1139         parse_omp_do can return next_statement.
1140         * match.h (gfc_match_omp_eos, gfc_match_omp_atomic,
1141         gfc_match_omp_barrier, gfc_match_omp_critical, gfc_match_omp_do,
1142         gfc_match_omp_flush, gfc_match_omp_master, gfc_match_omp_ordered,
1143         gfc_match_omp_parallel, gfc_match_omp_parallel_do,
1144         gfc_match_omp_parallel_sections, gfc_match_omp_parallel_workshare,
1145         gfc_match_omp_sections, gfc_match_omp_single,
1146         gfc_match_omp_threadprivate, gfc_match_omp_workshare,
1147         gfc_match_omp_end_nowait, gfc_match_omp_end_single): New prototypes.
1148         * resolve.c (resolve_blocks): Ignore EXEC_OMP_* block directives.
1149         (resolve_code): Call gfc_resolve_omp_directive on EXEC_OMP_*
1150         directives.
1151         * trans.c (gfc_trans_code): Call gfc_trans_omp_directive for
1152         EXEC_OMP_* directives.
1153         * st.c (gfc_free_statement): Handle EXEC_OMP_* statement freeing.
1154         * trans-stmt.h (gfc_trans_omp_directive): New prototype.
1155         * openmp.c: New file.
1156         * trans-openmp.c: New file.
1158 2006-02-13  Andrew Pinski  <pinskia@physics.uc.edu>
1159             Jakub Jelinek  <jakub@redhat.com>
1161         PR fortran/26246
1162         * trans-decl.c (gfc_get_symbol_decl, gfc_get_fake_result_decl): Use
1163         gfc_add_decl_to_function rather than gfc_finish_var_decl on length.
1165 2006-02-13  Paul Thomas  <pault@gcc.gnu.org>
1167         PR fortran/26074
1168         PR fortran/25103
1169         * resolve.c (resolve_symbol): Extend the requirement that module
1170         arrays have constant bounds to those in the main program.  At the
1171         same time simplify the array bounds, to avoiding trapping parameter
1172         array references, and exclude automatic character length from main
1173         and modules. Rearrange resolve_symbol and resolve_derived to put as
1174         each flavor together, as much as is possible and move all specific
1175         code for flavors FL_VARIABLE, FL_PROCEDURE and FL_PARAMETER into new
1176         functions.
1177         (resolve_fl_var_and_proc, resolve_fl_variable, resolve_fl_procedure):
1178         New functions to do work of resolve_symbol.
1179         (resolve_index_expr): New function that is called from resolved_symbol
1180         and is extracted from resolve_charlen.
1181         (resolve_charlen): Call this new function.
1182         (resolve_fl_derived): Renamed resolve_derived to be consistent with
1183         the naming of the new functions for the other flavours.  Change the
1184         charlen checking so that the style is consistent with other similar
1185         checks. Add the generation of the gfc_dt_list, removed from resolve_
1186         symbol.
1188         PR fortran/20861
1189         * resolve.c (resolve_actual_arglist): Prevent internal procedures
1190         from being dummy arguments.
1192         PR fortran/20871
1193         * resolve.c (resolve_actual_arglist): Prevent pure but non-intrinsic
1194         procedures from being dummy arguments.
1196         PR fortran/25083
1197         * resolve.c (check_data_variable): Add test that data variable is in
1198         COMMON.
1200         PR fortran/25088
1201         * resolve.c (resolve_call): Add test that the subroutine does not
1202         have a type.
1204 2006-02-12  Erik Edelmann  <eedelman@gcc.gnu.org>
1206         PR fortran/25806
1207         * trans-array.c (gfc_trans_allocate_array_storage): New argument
1208         dealloc; free the temporary only if dealloc is true.
1209         (gfc_trans_allocate_temp_array): New argument bool dealloc, to be
1210         passed onwards to gfc_trans_allocate_array_storage.
1211         (gfc_trans_array_constructor, gfc_conv_loop_setup): Update call to
1212         gfc_trans_allocate_temp_array.
1213         * trans-array.h (gfc_trans_allocate_temp_array): Update function
1214         prototype.
1215         * trans-expr.c (gfc_conv_function_call): Set new argument 'dealloc'
1216         to gfc_trans_allocate_temp_array to false in case of functions
1217         returning pointers.
1218         (gfc_trans_arrayfunc_assign): Return NULL for functions returning
1219         pointers.
1221 2006-02-10  Steven G. Kargl  <kargls@comcast.net>
1223         PR fortran/20858
1224         *decl.c (variable_decl): Improve error message.  Remove initialization
1225         typespec.  Wrap long line.
1226         *expr.c (gfc_check_pointer_assign): Permit checking of type, kind type,
1227         and rank.
1228         *simplify.c (gfc_simplify_null): Ensure type, kind type, and rank
1229         are set.
1232 2006-02-10  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
1234         PR fortran/14771
1235         * arith.c (eval_intrinsic): Accept INTRINSIC_PARENTHESES.
1236         * expr.c (check_intrinsic_op): Likewise.
1237         * module.c (mio_expr): Likewise.
1239 2006-02-09  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
1241         * dump-parse-tree.c: Update copyright years.
1242         * matchexp.c: Likewise.
1243         * module.c: Likewise.
1245         PR fortran/14771
1246         * gfortran.h (gfc_intrinsic_op): Add INTRINSIC_PARENTHESES.
1247         * dump-parse-tree (gfc_show_expr): Handle INTRINSIC_PARENTHESES.
1248         * expr.c (simplify_intrinsic_op): Treat INTRINSIC_PARENTHESES as
1249         if it were INTRINSIC_UPLUS.
1250         * resolve.c (resolve_operator): Handle INTRINSIC_PARENTHESES.
1251         * match.c (intrinsic_operators): Add INTRINSIC_PARENTHESES.
1252         * matchexp.c (match_primary): Record parentheses surrounding
1253         numeric expressions.
1254         * module.c (intrinsics): Add INTRINSIC_PARENTHESES for module
1255         dumping.
1256         * trans-expr.c (gfc_conv_expr_op): Handle INTRINSIC_PARENTHESES.
1258 2006-02-09  Paul Thomas  <pault@gcc.gnu.org>
1260         PR fortran/26038
1261         * trans-stmt.c (gfc_trans_allocate): Provide assumed character length
1262         scalar with missing backend_decl for the hidden dummy charlen.
1264         PR fortran/25059
1265         * interface.c (gfc_extend_assign): Remove detection of non-PURE
1266         subroutine in assignment interface, with gfc_error, and put it in
1267         * resolve.c (resolve_code).
1269         PR fortran/25070
1270         * interface.c (gfc_procedure_use): Flag rank checking for non-
1271         elemental, contained or interface procedures in call to
1272         (compare_actual_formal), where ranks are checked for assumed
1273         shape arrays..
1275 2006-02-08  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1277         PR libfortran/25425
1278         * trans-decl.c (gfc_generate_function_code): Add new argument,
1279         pedantic, to set_std call.
1281 2006-02-06  Thomas Koenig  <Thomas.Koenig@online.de>
1283         PR libfortran/23815
1284         * gfortran.texi: Document the GFORTRAN_CONVERT_UNIT environment
1285         variable.
1286         * invoke.texi:  Mention the "Runtime" chapter.
1287         Document the -fconvert= option.
1288         * gfortran.h:  Add options_convert.
1289         * lang.opt:  Add fconvert=little-endian, fconvert=big-endian,
1290         fconvert=native and fconvert=swap.
1291         * trans-decl.c (top level):  Add gfor_fndecl_set_convert.
1292         (gfc_build_builtin_function_decls):  Set gfor_fndecl_set_convert.
1293         (gfc_generate_function_code):  If -fconvert was specified,
1294         and this is the main program, add a call to set_convert().
1295         * options.c:  Handle the -fconvert options.
1297 2006-02-06  Roger Sayle  <roger@eyesopen.com>
1299         * trans-stmt.c (gfc_evaluate_where_mask): Allow the NMASK argument
1300         to be NULL to indicate that the not mask isn't required.
1301         (gfc_trans_where_2): Remove PMASK argument.  Avoid calculating the
1302         pending mask for the last clause of a WHERE chain.  Update recursive
1303         call.
1304         (gfc_trans_forall_1): Update call to gfc_trans_where_2.
1305         (gfc_trans_where): Likewise.
1307 2006-02-06  Jakub Jelinek  <jakub@redhat.com>
1309         Backport from gomp-20050608-branch
1310         * trans-decl.c (create_function_arglist): Handle dummy functions.
1312         * trans-decl.c (gfc_get_symbol_decl): Revert explicit setting of
1313         TYPE_SIZE_UNIT.
1314         (gfc_trans_vla_type_sizes): Also "gimplify"
1315         GFC_TYPE_ARRAY_DATAPTR_TYPE for GFC_DESCRIPTOR_TYPE_P types.
1316         * trans-array.c (gfc_trans_deferred_array): Call
1317         gfc_trans_vla_type_sizes.
1319         * trans-decl.c (saved_function_decls, saved_parent_function_decls):
1320         Remove unnecessary initialization.
1321         (create_function_arglist): Make sure __result has complete type.
1322         (gfc_get_fake_result_decl): Change current_fake_result_decl into
1323         a tree chain.  For entry master, create a separate variable
1324         for each result name.  For BT_CHARACTER results, call
1325         gfc_finish_var_decl on length even if it has been already created,
1326         but not pushdecl'ed.
1327         (gfc_trans_vla_type_sizes): For function/entry result, adjust
1328         result value type, not the FUNCTION_TYPE.
1329         (gfc_generate_function_code): Adjust for current_fake_result_decl
1330         changes.
1331         (gfc_trans_deferred_vars): Likewise.  Call gfc_trans_vla_type_sizes
1332         even on result if it is assumed-length character.
1334         * trans-decl.c (gfc_trans_dummy_character): Add SYM argument.
1335         Call gfc_trans_vla_type_sizes.
1336         (gfc_trans_auto_character_variable): Call gfc_trans_vla_type_sizes.
1337         (gfc_trans_vla_one_sizepos, gfc_trans_vla_type_sizes_1,
1338         gfc_trans_vla_type_sizes): New functions.
1339         (gfc_trans_deferred_vars): Adjust gfc_trans_dummy_character
1340         callers.  Call gfc_trans_vla_type_sizes on assumed-length
1341         character parameters.
1342         * trans-array.c (gfc_trans_array_bounds,
1343         gfc_trans_auto_array_allocation, gfc_trans_dummy_array_bias): Call
1344         gfc_trans_vla_type_sizes.
1345         * trans.h (gfc_trans_vla_type_sizes): New prototype.
1347         * trans-decl.c (gfc_build_qualified_array): For non-assumed-size
1348         arrays without constant size, create also an index var for
1349         GFC_TYPE_ARRAY_SIZE (type).  If the type is incomplete, complete
1350         it as 0..size-1.
1351         (gfc_create_string_length): Don't call gfc_defer_symbol_init
1352         if just creating DECL_ARGUMENTS.
1353         (gfc_get_symbol_decl): Call gfc_finish_var_decl and
1354         gfc_defer_symbol_init even if ts.cl->backend_decl is already
1355         set to a VAR_DECL that doesn't have DECL_CONTEXT yet.
1356         (create_function_arglist): Rework, so that hidden length
1357         arguments for CHARACTER parameters are created together with
1358         the parameters.  Resolve ts.cl->backend_decl for CHARACTER
1359         parameters.  If the argument is a non-constant length array
1360         or CHARACTER, ensure PARM_DECL has different type than
1361         its DECL_ARG_TYPE.
1362         (generate_local_decl): Call gfc_get_symbol_decl even
1363         for non-referenced non-constant length CHARACTER parameters
1364         after optionally issuing warnings.
1365         * trans-array.c (gfc_trans_array_bounds): Set last stride
1366         to GFC_TYPE_ARRAY_SIZE (type) to initialize it as well.
1367         (gfc_trans_dummy_array_bias): Initialize GFC_TYPE_ARRAY_SIZE (type)
1368         variable as well.
1370         * trans-expr.c (gfc_conv_expr_val): Fix comment typo.
1372         * trans-stmt.c (gfc_trans_simple_do): Fix comment.
1374 2006-02-04  Roger Sayle  <roger@eyesopen.com>
1376         * dependency.c (gfc_check_dependency): Remove unused vars and nvars
1377         arguments.  Replace with an "identical" argument.  A full array
1378         reference to the same symbol is a dependency if identical is true.
1379         * dependency.h (gfc_check_dependency): Update prototype.
1380         * trans-array.h (gfc_check_dependency): Delete duplicate prototype.
1381         * trans-stmt.c: #include dependency.h for gfc_check_dependency.
1382         (gfc_trans_forall_1): Update calls to gfc_check_dependency.
1383         (gfc_trans_where_2): Likewise.  Remove unneeded variables.
1384         (gfc_trans_where_3): New function for simple non-dependent WHEREs.
1385         (gfc_trans_where): Call gfc_trans_where_3 to translate simple
1386         F90-style WHERE statements without internal dependencies.
1387         * Make-lang.in (trans-stmt.o): Depend upon dependency.h.
1389 2006-02-05  H.J. Lu  <hongjiu.lu@intel.com>
1391         PR fortran/26041
1392         PR fortran/26064
1393         * resolve.c (resolve_types): New function.
1394         (resolve_codes): Likewise.
1395         (gfc_resolve): Use them.
1397 2006-02-05  Roger Sayle  <roger@eyesopen.com>
1399         * trans-stmt.c (gfc_evaluate_where_mask): Use LOGICAL*1 for WHERE
1400         masks instead of LOGICAL*4.
1402 2006-02-05  Jakub Jelinek  <jakub@redhat.com>
1404         * resolve.c (resolve_symbol): Initialize constructor_expr to NULL.
1406 2006-02-04  Thomas Koenig  <Thomas.Koenig@online.de>
1408         PR fortran/25075
1409         check.c (identical_dimen_shape):  New function.
1410         (check_dot_product):  Use identical_dimen_shape() to check sizes
1411         for dot_product.
1412         (gfc_check_matmul):  Likewise.
1413         (gfc_check_merge):  Check conformance between tsource and fsource
1414         and between tsource and mask.
1415         (gfc_check_pack):  Check conformance between array and mask.
1417 2006-02-03  Steven G. Kargl  <kargls@comcast>
1418             Paul Thomas  <pault@gcc.gnu.org>
1420         PR fortran/20845
1421         * resolve.c (resolve_symbol): Default initialization of derived type
1422         component reguires the SAVE attribute.
1424 2006-02-02  Steven G. Kargl  <kargls@comcast>
1426         PR fortran/24958
1427         match.c (gfc_match_nullify):  Free the list from head not tail.
1429         PR fortran/25072
1430         * match.c (match_forall_header): Fix internal error caused by bogus
1431         gfc_epxr pointers.
1434 2006-01-31  Thomas Koenig  <Thomas.Koenig@online.de>
1436         PR fortran/26039
1437         expr.c (gfc_check_conformance):  Reorder error message
1438         to avoid plural.
1439         check.c(gfc_check_minloc_maxloc):  Call gfc_check_conformance
1440         for checking arguments array and mask.
1441         (check_reduction):  Likewise.
1443 2006-01-30  Erik Edelmann  <eedelman@gcc.gnu.org>
1445         PR fortran/24266
1446         * trans-io.c (set_internal_unit): Check the rank of the
1447         expression node itself instead of its symbol.
1449 2006-01-29  Paul Thomas  <pault@gcc.gnu.org>
1451         PR fortran/18578
1452         PR fortran/18579
1453         PR fortran/20857
1454         PR fortran/20885
1455         * interface.c (compare_actual_formal): Error for INTENT(OUT or INOUT)
1456         if actual argument is not a variable.
1458 2006-01-28  Paul Thomas  <pault@gcc.gnu.org>
1460         PR fortran/17911
1461         * expr.c (gfc_check_assign, gfc_check_pointer_assign): Emit error if
1462         the lvalue is a use associated procedure.
1464         PR fortran/20895
1465         PR fortran/25030
1466         * expr.c (gfc_check_pointer_assign): Emit error if lvalue and rvalue
1467         character lengths are not the same.  Use gfc_dep_compare_expr for the
1468         comparison.
1469         * gfortran.h: Add prototype for gfc_dep_compare_expr.
1470         * dependency.h: Remove prototype for gfc_dep_compare_expr.
1472 2006-01-27  Paul Thomas  <pault@gcc.gnu.org>
1474         PR fortran/25964
1475         * resolve.c (resolve_function): Add GFC_ISYM_LOC to the list of
1476         generic_ids exempted from assumed size checking.
1478 2006-01-27  Jakub Jelinek  <jakub@redhat.com>
1480         PR fortran/25324
1481         * Make-lang.in (fortran/scanner.o): Depend on toplev.h.
1482         * lang.opt (fpreprocessed): New option.
1483         * scanner.c: Include toplev.h.
1484         (gfc_src_file, gfc_src_preprocessor_lines): New variables.
1485         (preprocessor_line): Unescape filename if there were any
1486         backslashes.
1487         (load_file): If initial and gfc_src_file is not NULL,
1488         use it rather than opening the file.  If gfc_src_preprocessor_lines
1489         has non-NULL elements, pass it to preprocessor_line.
1490         (unescape_filename, gfc_read_orig_filename): New functions.
1491         * gfortran.h (gfc_option_t): Add flag_preprocessed.
1492         (gfc_read_orig_filename): New prototype.
1493         * options.c (gfc_init_options): Clear flag_preprocessed.
1494         (gfc_post_options): If flag_preprocessed, call
1495         gfc_read_orig_filename.
1496         (gfc_handle_option): Handle OPT_fpreprocessed.
1497         * lang-specs.h: Pass -fpreprocessed to f951 if preprocessing
1498         sources.
1500 2006-01-27  Erik Edelmann  <eedelman@gcc.gnu.org>
1502         * symbol.c (free_old_symbol): Fix confusing comment, and add code
1503           to free old_symbol->formal.
1505 2006-01-26  Paul Thomas  <pault@gcc.gnu.org>
1507         PR fortran/25964
1508         * resolve.c (resolve_function): Exclude statement functions from
1509         global reference checking.
1511         PR fortran/25084
1512         PR fortran/20852
1513         PR fortran/25085
1514         PR fortran/25086
1515         * resolve.c (resolve_function): Declare a gfc_symbol to replace the
1516         references through the symtree to the symbol associated with the
1517         function expresion. Give error on reference to an assumed character
1518         length function is defined in an interface or an external function
1519         that is not a dummy argument.
1520         (resolve_symbol): Give error if an assumed character length function
1521         is array-valued, pointer-valued, pure or recursive. Emit warning
1522         that character(*) value functions are obsolescent in F95.
1524         PR fortran/25416
1525         * trans-expr.c (gfc_conv_function_call): The above patch to resolve.c
1526         prevents any assumed character length function call from getting here
1527         except intrinsics such as SPREAD. In this case, ensure that no
1528         segfault occurs from referencing non-existent charlen->length->
1529         expr_type and provide a backend_decl for the charlen from the charlen
1530         of the first actual argument.
1532         Cure temp name confusion.
1533         * trans-expr.c (gfc_get_interface_mapping_array): Change name of
1534         temporary from "parm" to "ifm" to avoid clash with temp coming from
1535         trans-array.c.
1537 2006-01-25  Erik Edelmann  <eedelman@gcc.gnu.org>
1539         PR fortran/25716
1540         * symbol.c (free_old_symbol): New function.
1541         (gfc_commit_symbols): Use it.
1542         (gfc_commit_symbol): New function.
1543         (gfc_use_derived): Use it.
1544         * gfortran.h: Add prototype for gfc_commit_symbol.
1545         * intrinsic.c (gfc_find_function): Search in 'conversion'
1546         if not found in 'functions'.
1547         (gfc_convert_type_warn): Add a symtree to the new
1548         expression node, and commit the new symtree->n.sym.
1549         * resolve.c (gfc_resolve_index): Make sure typespec is
1550         properly initialized.
1552 2006-01-23  Paul Thomas  <pault@gcc.gnu.org>
1554         PR fortran/25901
1555         * decl.c (get_proc_name): Replace subroutine and function attributes
1556         in "already defined" test by the formal arglist pointer being non-NULL.
1558         Fix regression in testing of admissability of attributes.
1559         * symbol.c (gfc_add_attribute): If the current_attr has non-zero
1560         intent, do not do the check for a dummy being used.
1561         * decl.c (attr_decl1): Add current_attr.intent as the third argument
1562         in the call to gfc_add_attribute.
1563         * gfortran.h: Add the third argument to the prototype for
1564         gfc_add_attribute.
1566 2006-01-21  Joseph S. Myers  <joseph@codesourcery.com>
1568         * gfortranspec.c (lang_specific_driver): Update copyright notice
1569         date.
1571 2006-01-21  Paul Thomas  <pault@gcc.gnu.org>
1573         PR fortran/25124
1574         PR fortran/25625
1575         * decl.c (get_proc_name): If there is an existing
1576         symbol in the encompassing namespace, call errors
1577         if it is a procedure of the same name or the kind
1578         field is set, indicating a type declaration.
1580         PR fortran/20881
1581         PR fortran/23308
1582         PR fortran/25538
1583         PR fortran/25710
1584         * decl.c (add_global_entry): New function to check
1585         for existing global symbol with this name and to
1586         create new one if none exists.
1587         (gfc_match_entry): Call add_global_entry before
1588         matching argument lists for subroutine and function
1589         entries.
1590         * gfortran.h: Prototype for existing function,
1591         global_used.
1592         * resolve.c (resolve_global_procedure): New function
1593         to check global symbols for procedures.
1594         (resolve_call, resolve_function): Calls to this
1595         new function for non-contained and non-module
1596         procedures.
1597         * match.c (match_common): Add check for existing
1598         global symbol, creat one if none exists and emit
1599         error if there is a clash.
1600         * parse.c (global_used): Remove static and use the
1601         gsymbol name rather than the new_block name, so that
1602         the function can be called from resolve.c.
1603         (parse_block_data, parse_module, add_global_procedure):
1604         Improve checks for existing gsymbols.  Emit error if
1605         already defined or if references were to another type.
1606         Set defined flag.
1608         PR fortran/PR24276
1609         * trans-expr.c (gfc_conv_aliased_arg): New function called by 
1610         gfc_conv_function_call that coverts an expression for an aliased
1611         component reference to a derived type array into a temporary array
1612         of the same type as the component.  The temporary is passed as an
1613         actual argument for the procedure call and is copied back to the
1614         derived type after the call.
1615         (is_aliased_array): New function that detects an array reference
1616         that is followed by a component reference.
1617         (gfc_conv_function_call): Detect an aliased actual argument with
1618         is_aliased_array and convert it to a temporary and back again
1619         using gfc_conv_aliased_arg.
1621 2006-01-19  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
1623         * gfortranspec.c: Update copyright years.
1624         * trans.c: Likewise.
1625         * trans-array.c: Likewise.
1626         * trans-array.h: Likewise.
1627         * trans-decl.c: Likewise.
1628         * trans-stmt.c: Likewise.
1629         * trans-stmt.h: Likewise.
1630         * trans-types.c: Likewise.
1632 2006-01-18  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
1634         PR fortran/18540
1635         PR fortran/18937
1636         * gfortran.h (BBT_HEADER): Move definition up.
1637         (gfc_st_label): Add BBT_HEADER, remove 'prev' and 'next'.
1638         * io.c (format_asterisk): Adapt initializer.
1639         * resolve.c (resolve_branch): Allow FORTRAN 66 cross-block GOTOs
1640         as extension.
1641         (warn_unused_label): Take gfc_st_label label as argument, adapt to
1642         new data structure.
1643         (gfc_resolve): Adapt call to warn_unused_label.
1644         * symbol.c (compare_st_labels): New function.
1645         (gfc_free_st_label, free_st_labels, gfc_get_st_label): Convert to
1646         using balanced binary tree.
1647         * decl.c (match_char_length, gfc_match_old_kind_spec): Do away
1648         with 'cnt'.
1649         (warn_unused_label): Adapt to binary tree.
1650         * match.c (gfc_match_small_literal_int): Only set cnt if non-NULL.
1651         * primary.c (match_kind_param): Do away with cnt.
1653 2006-01-18  Paul Thomas  <pault@gcc.gnu.org>
1655         PR fortran/20869
1656         PR fortran/20875
1657         PR fortran/25024
1658         * symbol.c (check_conflict): Add pointer valued elemental
1659         functions and internal procedures with the external attribute
1660         to the list of conflicts.
1661         (gfc_add_attribute): New catch-all function to perform the
1662         checking of symbol attributes for attribute declaration
1663         statements.
1664         * decl.c (attr_decl1): Call gfc_add_attribute for each of -
1665         (gfc_match_external, gfc_match_intent, gfc_match_intrinsic,
1666         gfc_match_pointer, gfc_match_dimension, gfc_match_target):
1667         Remove spurious calls to checks in symbol.c.  Set the
1668         attribute directly and use the call to attr_decl() for
1669         checking.
1670         * gfortran.h:  Add prototype for gfc_add_attribute.
1672         PR fortran/25785
1673         * resolve.c (resolve_function): Exclude PRESENT from assumed size
1674         argument checking. Replace strcmp's with comparisons with generic
1675         codes.
1677 2006-01-16  Rafael �Ávila de Esp�índola  <rafael.espindola@gmail.com>
1679         * gfortranspec.c (lang_specific_spec_functions): Remove.
1681 2006-01-16  Richard Guenther  <rguenther@suse.de>
1683         * trans-stmt.c (gfc_trans_if_1): Use fold_buildN and build_int_cst.
1684         (gfc_trans_arithmetic_if): Likewise.
1685         (gfc_trans_simple_do): Likewise.
1686         (gfc_trans_do): Likewise.
1687         (gfc_trans_do_while): Likewise.
1688         (gfc_trans_logical_select): Likewise.
1689         (gfc_trans_forall_loop): Likewise.
1690         (generate_loop_for_temp_to_lhs): Likewise.
1691         (generate_loop_for_rhs_to_temp): Likewise.
1692         (gfc_trans_allocate): Likewise.
1693         * trans.c (gfc_add_expr_to_block): Do not fold expr again.
1695 2006-01-16  Richard Guenther  <rguenther@suse.de>
1697         * trans-expr.c (gfc_conv_function_call): Use fold_build2.
1698         * trans-stmt.c (gfc_trans_goto): Likewise.  Use build_int_cst.
1699         * trans.c (gfc_trans_runtime_check): Don't fold the condition
1700         again.
1702 2006-01-13  Steven G. Kargl  <kargls@comcast.net>
1704         PR fortran/25756
1705         * symbol.c (gfc_free_st_label): Give variable meaningful name. Remove
1706         unneeded parenthesis. Fix-up the head of the list (2 lines gleaned
1707         from g95).
1709 2006-01-13  Diego Novillo  <dnovillo@redhat.com>
1711         * trans.c (gfc_add_expr_to_block): Do not fold tcc_statement
1712         nodes.
1714 2006-01-11  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
1716         * parse.c (next_fixed): Remove superfluous string concatenation.
1718 2006-01-11  Bernhard Fischer  <rep.nop@aon.at>
1720         PR fortran/25486
1721         * scanner.c (load_line): use maxlen to determine the line-length used
1722         for padding lines in fixed form.
1724 2006-01-11  Paul Thomas  <pault@gcc.gnu.org>
1726         PR fortran/25730
1727         * trans-types.c (copy_dt_decls_ifequal): Copy backend decl for
1728         character lengths.
1730 2006-01-09  Andrew Pinski  <pinskia@physics.uc.edu>
1732         fortran/24936
1733         * trans-stmt.c (gfc_trans_pointer_assign_need_temp): Use fold_convert
1734         to avoid type mismatch.
1736 2006-01-09  Andrew Pinski  <pinskia@physics.uc.edu>
1738         PR fortran/21977
1739         * trans-decl.c (gfc_generate_function_code): Move the NULLing of
1740         current_fake_result_decl down to below generate_local_vars.
1742 2006-01-09  Feng Wang  <fengwang@nudt.edu.cn>
1744         PR fortran/12456
1745         * trans-expr.c (gfc_to_single_character): New function that converts
1746         string to single character if its length is 1.
1747         (gfc_build_compare_string):New function that compare string and handle
1748         single character specially.
1749         (gfc_conv_expr_op): Use gfc_build_compare_string.
1750         (gfc_trans_string_copy): Use gfc_to_single_character.
1751         * trans-intrinsic.c (gfc_conv_intrinsic_strcmp): Use
1752         gfc_build_compare_string.
1753         * trans.h (gfc_build_compare_string): Add prototype.
1755 2006-01-09  Feng Wang  <fengwang@nudt.edu.cn>
1757         * simplify.c (gfc_simplify_char): Use UCHAR_MAX instead of literal
1758         constant.
1759         (gfc_simplify_ichar): Get the result from unsinged char and in the
1760         range 0 to UCHAR_MAX instead of CHAR_MIN to CHAR_MAX.
1762 2006-01-08  Erik Edelmann  <eedelman@gcc.gnu.org>
1764         PR fortran/25093
1765         * resolve.c (resolve_fntype): Check that PUBLIC functions
1766         aren't of PRIVATE type.
1768 2006-01-07  Tobias Schl"uter  <tobias.schlueter@physik.uni-muenchen.de>
1770         * decl.c (gfc_match_function_decl): Correctly error out in case of
1771         omitted function argument list.
1773 2006-01-07  Paul Thomas  <pault@gcc.gnu.org>
1775         PR fortran/22146
1776         * trans-array.c (gfc_reverse_ss): Remove static attribute.
1777         (gfc_walk_elemental_function_args): Replace gfc_expr * argument for
1778         the function call with the corresponding gfc_actual_arglist*.  Change
1779         code accordingly.
1780         (gfc_walk_function_expr): Call to gfc_walk_elemental_function_args
1781         now requires the actual argument list instead of the expression for
1782         the function call.
1783         * trans-array.h: Modify the prototype for gfc_walk_elemental_function_args
1784         and provide a prototype for gfc_reverse_ss.
1785         * trans-stmt.h (gfc_trans_call): Add the scalarization code for the case
1786         where an elemental subroutine has array valued actual arguments.
1788         PR fortran/25029
1789         PR fortran/21256
1790         PR fortran/20868
1791         PR fortran/20870
1792         * resolve.c (check_assumed_size_reference): New function to check for upper
1793         bound in assumed size array references.
1794         (resolve_assumed_size_actual): New function to do a very restricted scan
1795         of actual argument expressions of those procedures for which incomplete
1796         assumed size array references are not allowed.
1797         (resolve_function, resolve_call): Switch off assumed size checking of
1798         actual arguments, except for elemental procedures and intrinsic
1799         inquiry functions, in some circumstances.
1800         (resolve_variable): Call check_assumed_size_reference.
1802 2006-01-05  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1804         PR fortran/24268
1805         * io.c (next_char_not_space): New function that returns the next
1806         character that is not white space.
1807         (format_lex): Use the new function to skip whitespace within
1808         a format string.
1810 2006-01-05  Erik Edelmann  <eedelman@gcc.gnu.org>
1812         PR fortran/23675
1813         * expr.c (gfc_expr_set_symbols_referenced): New function.
1814         * gfortran.h: Add a function prototype for it.
1815         * resolve.c (resolve_function): Use it for
1816         use associated character functions lengths.
1817         * expr.c, gfortran.h, resolve.c: Updated copyright years.
1819 2006-01-03  Steven G. Kargl  <kargls@comcast.net>
1821         PR fortran/25101
1822         * resolve.c (resolve_forall_iterators):  Check for scalar variables;
1823         Check stride is nonzero.
1825 2006-01-02  Steven G. Kargl  <kargls@comcast.net>
1827         PR fortran/24640
1828         * parse.c (next_free): Check for whitespace after the label.
1829         * match.c (gfc_match_small_literal_int): Initialize cnt variable.
1831 2006-01-01  Steven G. Kargl  <kargls@comcast.net>
1833         * ChangeLog: Split previous years into ...
1834         * ChangeLog-2002: here.
1835         * ChangeLog-2003: here.
1836         * ChangeLog-2004: here.
1837         * ChangeLog-2005: here.