2006-10-10 Brooks Moses <bmoses@stanford.edu>
[official-gcc.git] / gcc / fortran / ChangeLog
blob1b0d346e2c1e8f0a76ec4ff4dca37026ee4ae16c
1 2006-10-10  Brooks Moses  <bmoses@stanford.edu>
3         * gfortran.texi (Standards): Update to current status.
5 2006-10-09  Brooks Moses  <bmoses@stanford.edu>
7         * Make-lang.in: Added intrinsic.texi to GFORTRAN_TEXI
8         dependences.
10 2006-10-09  Brooks Moses  <bmoses@stanford.edu>
12         * intrinsic.texi (MOVE_ALLOC): changed "Options" to "Standards".
14 2006-10-09  Steven G. Kargl  <kargl@gcc.gnu.org>
16         * gfortran.h: Define GFC_MPFR_TOO_OLD via mpfr version info.
17         * arith.c (arctangent, gfc_check_real_range): Use it.   
18         * simplify.c (gfc_simplify_atan2, gfc_simplify_exponent,
19         gfc_simplify_log, gfc_simplify_nearest): Use it.
21         PR fortran/15441
22         PR fortran/29312
23         * iresolve.c (gfc_resolve_rrspacing): Give rrspacing library
24         routine hidden precision argument.
25         (gfc_resolve_spacing): Give spacing library routine hidden
26         precision, emin - 1, and tiny(x) arguments.
27         * simplify.c (gfc_simplify_nearest): Remove explicit subnormalization.
28         (gfc_simplify_rrspacing): Implement formula from Fortran 95 standard.
29         (gfc_simplify_spacing): Implement formula from Fortran 2003 standard.
30         * trans-intrinsic.c (gfc_intrinsic_map_t) Declare rrspacing and
31         spacing via LIBF_FUNCTION
32         (prepare_arg_info, call_builtin_clz, gfc_conv_intrinsic_spacing,
33         gfc_conv_intrinsic_rrspacing): Remove functions.
34         (gfc_conv_intrinsic_function): Remove calls to
35         gfc_conv_intrinsic_spacing and gfc_conv_intrinsic_rrspacing.
36         * f95-lang.c (gfc_init_builtin_functions): Remove __builtin_clz,
37         __builtin_clzl and __builtin_clzll
39 2006-10-09  Richard Henderson  <rth@redhat.com>
41         Revert emutls patch.
43 2006-10-09  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
45         * intrinsic.c (add_sym_0s, add_sym_1s, add_sym_2s, add_sym_3s,
46         add_sym_4s, add_sym_5s, add_functions): Use macro ACTUAL_NO,
47         ACTUAL_YES, NOT_ELEMENTAL and ELEMENTAL instead of constants
48         0 and 1 as second and third arguments to add_sym* functions.
50 2006-10-08  Erik Edelmann <edelmann@gcc.gnu.org>
51             Paul Thomas <pault@gcc.gnu.org>
53         PR fortran/20541
54         * interface.c (gfc_compare_derived_types): Add comparison of
55         the allocatable field.
56         * intrinsic.c (add_subroutines): Add MOVE_ALLOC.
57         * trans-expr.c (gfc_conv_aliased_arg, gfc_trans_subarray_assign,
58         gfc_trans_subcomponent_assign, gfc_conv_string_parameter,
59         gfc_trans_scalar_assign): Add extra arguments l_is_temp
60         and r_is_var to references to latter function.
61         (gfc_conv_function_call): Add enum for types of argument and
62         an associated variable parm_kind. Deallocate components of
63         INTENT(OUT) and non-variable arrays.
64         (gfc_trans_subcomponent_assign): Add block to assign arrays
65         to allocatable components.
66         (gfc_trans_scalar_assign): Add block to handle assignments of
67         derived types with allocatable components, using the above new
68         arguments to control allocation/deallocation of memory and the
69         copying of allocated arrays.
70         * trans-array.c (gfc_array_allocate): Remove old identification 
71         of pointer and replace with that of an allocatable array. Add
72         nullify of structures with allocatable components. 
73         (gfc_conv_array_initializer): Treat EXPR_NULL.
74         (gfc_conv_array_parameter): Deallocate allocatable components
75         of non-variable structures.
76         (gfc_trans_dealloc_allocated): Use second argument of library
77         deallocate to inhibit, without error, freeing NULL pointers.
78         (get_full_array_size): New function to return the size of a
79         full array.
80         (gfc_duplicate_allocatable): New function to allocate and copy
81         allocated data.
82         (structure_alloc_comps): New recursive function to deallocate,
83         nullify or copy allocatable components.
84         (gfc_nullify_alloc_comp, gfc_deallocate_alloc_comp,
85         gfc_copy_alloc_comp): New interface functions to call previous.
86         (gfc_trans_deferred_array): Add the code to nullify allocatable
87         components, when entering scope, and to deallocate them on
88         leaving. Do not call gfc_trans_static_array_pointer and return
89         for structures with allocatable components and default
90         initializers.
91         * symbol.c (gfc_set_component_attr): Set allocatable field.
92         (gfc_get_component_attr): Set the allocatable attribute.
93         * intrinsic.h : Prototype for gfc_check_move_alloc.
94         * decl.c (build_struct): Apply TR15581 constraints for
95         allocatable components.
96         (variable_decl): Default initializer is always NULL for
97         allocatable components.
98         (match_attr_spec): Allow, or not, allocatable components,
99         according to the standard in force.
100         * trans-array.h : Prototypes for gfc_nullify_alloc_comp,
101         gfc_deallocate_alloc_comp, gfc_copy_alloc_comp and
102         gfc_duplicate_allocatable.
103         * gfortran.texi : Add mention of TR15581 extensions.
104         * gfortran.h : Add attribute alloc_comp, add
105         gfc_components field allocatable and add the prototype
106         for gfc_expr_to_initialize.
107         * trans-stmt.c (generate_loop_for_temp_to_lhs,
108         generate_loop_for_rhs_to_temp, gfc_trans_where_assign,
109         gfc_trans_where_3): Add extra arguments to calls to
110         gfc_trans_scalar_assign and set appropriately.
111         (gfc_trans_allocate): Nullify allocatable components.
112         (gfc_trans_deallocate): Deallocate to ultimate allocatable
113         components but stop at ultimate pointer components.
114         * module.c (mio_symbol_attribute, mio_symbol_attribute,
115         mio_component): Add module support for allocatable
116         components.
117         * trans-types.c (gfc_get_derived_type): Treat allocatable
118         components.
119         * trans.h : Add two boolean arguments to
120         gfc_trans_scalar_assign.
121         * resolve.c (resolve_structure_cons): Check conformance of
122         constructor element and the component.
123         (resolve_allocate_expr): Add expression to nullify the
124         constructor expression for allocatable components.
125         (resolve_transfer): Inhibit I/O of derived types with
126         allocatable components.
127         (resolve_fl_derived): Skip check of bounds of allocatable
128         components.
129         * trans-decl.c (gfc_get_symbol_decl): Add derived types
130         with allocatable components to deferred variable.
131         (gfc_trans_deferred_vars): Make calls for derived types
132         with allocatable components to gfc_trans_deferred_array.
133         (gfc_generate_function_code): Nullify allocatable
134         component function result on entry.
135         * parse.c (parse_derived): Set symbol attr.allocatable if
136         allocatable components are present.
137         * check.c (gfc_check_allocated): Enforce attr.allocatable
138         for intrinsic arguments.
139         (gfc_check_move_alloc): Check arguments of move_alloc.
140         * primary.c (gfc_variable_attr): Set allocatable attribute.
141         * intrinsic.texi : Add index entry and section for
142         for move_alloc.
144 2006-10-08  Paul Thomas <pault@gcc.gnu.org>
146         PR fortran/29115
147         * resolve.c (resolve_structure_cons): It is an error if the
148         pointer component elements of a derived type constructor are
149         not pointer or target.
152         PR fortran/29211
153         * trans-stmt.c (generate_loop_for_temp_to_lhs,
154         generate_loop_for_rhs_to_temp): Provide a string length for
155         the temporary by copying that of the other side of the scalar
156         assignment.
158 2006-10-08  Tobias Burnus  <burnus@net-b.de>
160         PR fortran/28585
161         * intrinsic.c (add_functions): Add new_line Fortran 2003 intrinsic.
162         * intrinsic.h: Add gfc_simplify_new_line and gfc_check_new_line
163         prototypes.
164         * check.c (gfc_check_new_line): New function.
165         * simplify.c (gfc_simplify_new_line): New function.
166         * intrinsic.texi: Document new_line intrinsic.
168 2006-10-07  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
170         PR fortran/16580
171         PR fortran/29288
172         * gcc/fortran/intrinsic.c (add_sym): Define the actual_ok when a
173         gfc_intrinsic_sym structure is filled.
174         (gfc_intrinsic_actual_ok): New function.
175         (add_sym_0s, add_sym_1s, add_sym_2s, add_sym_3s, add_sym_4s,
176         add_sym_5s): Intrinsic subroutines are not allowed as actual
177         arguments, so we remove argument actual_ok.
178         (add_functions): Correct the values for actual_ok of all intrinsics.
179         Add comments for gfc_check_access_func and gfc_resolve_index_func.
180         (add_subroutines): Remove the actual_ok argument, which was never used.
181         * gcc/fortran/intrinsic.h (gfc_intrinsic_actual_ok): New prototype.
182         * gcc/fortran/gfortran.h (gfc_resolve_index_func): New prototype.
183         * gcc/fortran/resolve.c (resolve_actual_arglist): Check whether
184         an intrinsic used as an argument list is allowed there.
185         * gcc/fortran/iresolve.c (gfc_resolve_index_func): New function.
186         (gfc_resolve_len): Change intrinsic function name to agree with
187         libgfortran.
188         * gcc/fortran/trans-decl.c (gfc_get_extern_function_decl): Add
189         new case, because some specific intrinsics take 3 arguments.
190         * gcc/fortran/intrinsic.texi: DIMAG is a GNU extension.
192 2006-10-06  Jakub Jelinek  <jakub@redhat.com>
194         PR fortran/28415
195         * trans-decl.c (gfc_finish_var_decl): With -fno-automatic, don't
196         make artificial variables or pointer to variable automatic array
197         TREE_STATIC.
199         * scanner.c (skip_free_comments): Return bool instead of void.
200         (gfc_next_char_literal): Don't return ' ' if & is missing after
201         !$omp or !$.  Use skip_{free,fixed}_comments directly instead
202         of gfc_skip_comments.
204 2006-10-04  Brooks Moses  <bmoses@stanford.edu>
206         * gfortran.texi: (Current Status): update and rewrite to reflect
207         actual status more accurately.
209 2006-10-04  Brooks Moses  <bmoses@stanford.edu>
211         * gfortran.texi: Consistently refer to the compiler as "GNU
212         Fortran".
213         * intrinsic.texi: Ditto.
214         * invoke.texi: Ditto.
216 2006-10-04  Richard Henderson  <rth@redhat.com>
217             Jakub Jelinek  <jakub@redhat.com>
219         * f95-lang.c (gfc_init_builtin_functions): Add __emutls_get_address
220         and __emutls_register_common.
221         * openmp.c (gfc_match_omp_threadprivate): Don't error if !have_tls.
222         * trans-common.c (build_common_decl): Don't check have_tls.
223         * trans-decl.c (gfc_finish_var_decl): Likewise.
224         * types.def (BT_WORD, BT_FN_PTR_PTR): New.
225         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
227 2006-10-04  Paul Thomas <pault@gcc.gnu.org>
229         PR fortran/29343
230         * resolve.c (resolve_allocate_expr): Exclude derived types from
231         search for dependences between allocated variables and the
232         specification expressions for other allocations in the same
233         statement.
235 2006-10-04  Paul Thomas  <pault@gcc.gnu.org>
237         PR fortran/29098
238         * resolve.c (resolve_structure_cons): Do not return FAILURE if
239         component expression is NULL.
241 2006-10-03  Paul Thomas  <pault@gcc.gnu.org>
243         PR fortran/20779
244         PR fortran/20891
245         * resolve.c (find_sym_in_expr): New function that returns true
246         if a symbol is found in an expression.
247         (resolve_allocate_expr): Check whether the STAT variable is
248         itself allocated in the same statement.  Use the call above to
249         check whether any of the allocated arrays are used in array
250         specifications in the same statement.
252 2006-10-03  Steven G. Kargl  <kargl@gcc.gnu.org>
254         * arith.c (gfc_check_real_range):  Use correct exponent range for
255         subnormal numbers.
257 2006-10-03  Paul Thomas  <pault@gcc.gnu.org>
259         PR fortran/29284
260         PR fortran/29321
261         PR fortran/29322
262         * trans-expr.c (gfc_conv_function_call): Check the expression
263         and the formal symbol are present when testing the actual
264         argument.
266         PR fortran/25091
267         PR fortran/25092
268         * resolve.c (resolve_entries): It is an error if the entries
269         of an array-valued function do not have the same shape.
271 2006-10-03  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
273         PR middle-end/27478
274         * trans-decl.c (gfc_get_fake_result_decl): Mark var as
275         TREE_ADDRESSABLE.
277 2006-10-02  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
279         PR fortran/19262
280         * gfortran.h (gfc_option_t): Add max_continue_fixed and
281         max_continue_free.
282         * options.c (gfc_init_options): Initialize fixed form and free form
283         consecutive continuation line limits.
284         * scanner.c (gfc_scanner_init_1): Initialize continue_line
285         and continue_count. (gfc_next_char_literal): Count the number of
286         continuation lines in the current statement and warn if limit
287         is exceeded.
289 2006-10-02  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
291         PR fortran/19260
292         * scanner.c (gfc_next_char_literal): Add check for missing '&'
293         and warn if in_string, otherwise return ' '.
295 2006-10-02  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
297         PR fortran/29210
298         * primary.c (match_sym_complex_part): Named constants as real or
299         imaginary part of complex a named constant are only allowed in
300         Fortran 2003.
302 2006-10-01  Brooks Moses  <bmoses@stanford.edu>
304         * gfortran.texi: Corrected references to MALLOC intrinsic.
305         * invoke.texi: Minor cleanup and clarification to the Dialect
306         Options section.
308 2006-09-30  Brooks Moses  <bmoses@stanford.edu>
310         * invoke.texi:  Add mention of BOZ constants and integer
311         overflow to -fno-range-check.
312         * gfortran.texi:  Add mention of -fno-range-check to
313         section on BOZ contants.
315 2006-09-30  Bernhard Fischer  <aldot@gcc.gnu.org>
317         * resolve.c: Fix commentary typo.  Fix whitespace.
319 2006-09-28  Steven G. Kargl  <kargl@gcc.gnu.org>
321         fortran/29147
322         * arith.c (gfc_check_integer_range): Disable range checking via
323         -fno-range-check.
325 2006-09-28  Steven G. Kargl <kargl@gcc.gnu.org>
327         * arith.c: Change conditional test for inclusion of arctangent().
328         (gfc_check_real_range): Change conditional test for use of
329         mpfr_subnormalize.
330         * simplify.c (gfc_simplify_atan2): Fix conditional for use of
331         mpfr_atan2() instead of arctangent().
332         (gfc_simplify_exponent): Fix conditional for use of mpfr_get_exp().
333         (gfc_simplify_log): Fix conditional for use of mpfr_atan2() instead
334          of arctangent().
335         (gfc_simplify_nearest): Fix conditional for use of mpfr_nextafter(). 
337 2006-09-27  Steven G. Kargl  <kargl@gcc.gnu.org>
339         * arith.c: Conditionally include arctangent2().
340         (gfc_check_real_range): Use mpfr_subnormalize in preference to local
341         hack.
342         * trans-intrinsic.c (gfc_get_intrinsic_lib_fndecl): Append
343         l for long double functions.
344         * simplify.c: Wrap Copyright to new line.
345         (gfc_simplify_atan2): Use mpfr_atan2 in preference to arctangent2().
346         (gfc_simplify_log): Ditto.
349         PR fortran/28276
350         * simplify.c (gfc_simplify_exponent): Use mpfr_get_exp in
351         preference to broken local hack.
353         PR fortran/27021
354         * simplify.c (gfc_simplify_nearest): Use mpfr_nexttoward and
355         mpfr_subnormalize to handle numbers near zero in preference to broken
356          local hack.
358 2006-09-26  Jakub Jelinek  <jakub@redhat.com>
360         PR fortran/29097
361         * scanner.c (include_line): Handle conditional include.
363 2006-09-25  Tobias Schluter  <tobias.schlueter@physik.uni-muenchen.de>
365         PR fortran/21203
366         * error.c (show_loci): No need to risk an ICE to output a
367         slightly nicer error message.
369 2006-09-19 Paul Thomas <pault@gcc.gnu.org>
370            Steven Bosscher  <steven@gcc.gnu.org>
372         PR fortran/29101
373         * trans-stmt.c (gfc_trans_character_select): Store the label
374         from select_string and then clean up any temporaries from the
375         conversion of the select expression, before branching to the
376         selected case.
378 2006-09-18 Paul Thomas <pault@gcc.gnu.org>
380         PR fortran/28526
381         * primary.c (match_variable): If the compiler is in a module
382         specification block, an interface block or a contains section,
383         reset host_flag to force the changed symbols mechanism.
385         PR fortran/29101
386         * trans-stmt.c (gfc_trans_character_select): Add the post block
387         for the expression to the main block, after the call to
388         select_string and the last label.
390 2006-09-18  Paul Thomas  <pault@gcc.gnu.org>
392         PR fortran/29060
393         * iresolve.c (resolve_spread): Build shape for result if the
394         source shape is available and dim and ncopies are constants.
396 2006-09-18  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
398         PR fortran/28817
399         PR fortran/21918
400         * trans-decl.c (generate_local_decl): Change from 'warning' to
401         'gfc_warning' to have line numbers correctly reported.
403 2006-09-15  Paul Thomas  <pault@gcc.gnu.org>
405         PR fortran/29051
406         * decl.c (match_old_style_init): Set the 'where' field of the
407         gfc_data structure 'newdata'.
409         * match.c (match_case_eos): Add a comprehensible error message.
411 2006-09-13  Wolfgang Gellerich  <gellerich@de.ibm.com>
413         * trans-expr.c (gfc_add_interface_mapping): For characters, dereference
414         pointer if necessary and then perform the cast.
416 2006-09-11  Steven G. Kargl  <kargl@gcc.gnu.org>
418         * intrinsic.c: Update Copyright date.
419         * intrinsic.h: Ditto.
421 2006-09-11  Paul Thomas  <pault@gcc.gnu.org>
423         PR fortran/28890
424         * trans-expr.c (gfc_conv_function_call): Obtain the string length
425         of a dummy character(*) function from the symbol if it is not
426         already translated.  For a call to a character(*) function, use
427         the passed, hidden string length argument, which is available
428         from the backend_decl of the formal argument.
429         * resolve.c (resolve_function): It is an error if a function call
430         to a character(*) function is other than a dummy procedure or
431         an intrinsic.
433 2006-09-10  Paul Thomas  <pault@gcc.gnu.org>
435         PR fortran/28959
436         * trans-types.c (gfc_get_derived_type): Use the parent namespace of
437         the procedure if the type's own namespace does not have a parent.
439 2006-09-10  Paul Thomas  <pault@gcc.gnu.org>
441         PR fortran/28923
442         * expr.c (find_array_section): Only use the array lower and upper
443         bounds for the start and end of the sections, where the expr is
444         NULL.
446 2006-09-10  Paul Thomas <pault@gcc.gnu.org>
448         PR fortran/28914
449         * trans-array.c (gfc_trans_array_constructor_value): Create a temporary
450         loop variable to hold the current loop variable in case it is modified
451         by the array constructor.
453 2006-09-07  Steven G. Kargl  <kargls@comcast.net>
455         * gfortran.h (gfc_integer_info): Eliminate max_int.
456         * arith.c (gfc_arith_init_1): Remove initialization of max_int.
457         (gfc_arith_done_1): Remove clearing of max_int.
458         (gfc_check_integer_range): Fix range chekcing of overflow.
459         * simplify.c (gfc_simplify_not): Construct mask that was max_int.
461 2006-09-05  Paul Thomas <pault@gcc.gnu.org>
463         PR fortran/28908
464         * gfortran.h : Restore the gfc_dt_list structure and reference
465         to it in gfc_namespace.
466         * resolve.c (resolve_fl_derived): Restore the building of the
467         list of derived types for the current namespace. Modify the
468         restored code so that a check is made to see if the symbol is
469         already in the list.
470         (resolve_fntype): Make sure that the specification block
471         version of the derived type is used for a module function that
472         returns that type. 
473         * symbol.c (gfc_free_dt_list): Restore.
474         (gfc_free_namespace): Restore call to previous.
475         * trans-types.c (copy_dt_decls_ifequal): Restore.
476         (gfc_get_derived_type): Restore all the paraphenalia for
477         association of derived types, including calls to previous.
478         Modify the restored code such that all derived types are built
479         if their symbols are found in the parent namespace; not just
480         non-module types.  Add backend_decls to like derived types in
481         sibling namespaces, as well as that of the derived type.
483 2006-08-30  Kazu Hirata  <kazu@codesourcery.com>
485         * match.c: Fix a comment typo.
487 2006-08-30  Paul Thomas  <pault@gcc.gnu.org>
489         PR fortran/28885
490         * trans-expr.c (gfc_conv_aliased_arg): Ensure that the temp
491         declaration is retained for INTENT(OUT) arguments.
493         PR fortran/28873
494         PR fortran/20067
495         * resolve.c (resolve_generic_f): Make error message more
496         comprehensible.
497         (resolve_generic_s): Restructure search for specific procedures
498         to be similar to resolve_generic_f and change to similar error
499         message.  Ensure that symbol reference is refreshed, in case
500         the search produces a NULL.
501         (resolve_specific_s): Restructure search, as above and as
502         resolve_specific_f. Ensure that symbol reference is refreshed,
503         in case the search produces a NULL.
505         PR fortran/25077
506         PR fortran/25102
507         * interface.c (check_operator_interface): Throw error if the
508         interface assignment tries to change intrinsic type assigments
509         or has less than two arguments.  Also, it is an error if an
510         interface operator contains an alternate return.
512         PR fortran/24866
513         * parse.c (gfc_fixup_sibling_symbols): Do not modify the symbol
514         if it is a dummy in the contained namespace.
516 2006-08-29  Steven G. Kargl  <kargls@comcast.net>
518         PR fortran/28866
519         * match.c: Wrap copyright.
520         (gfc_match_assignment):  Return MATCH_NO for failed lvalue.  Remove
521         gotos.  Move error handling of FL_PARAMETER to ...
522         * gfc_match_if: Deal with MATCH_NO from above.
523         * primary.c: Wrap copyright.
524         (match_variable): ... here.  Improve error messages.
526 2006-08-29  Paul Thomas  <pault@gcc.gnu.org>
528         PR fortran/28788
529         * symbol.c (gfc_use_derived): Never eliminate the symbol,
530         following reassociation of use associated derived types.
532 2006-08-26  Steven G. Kargl  <kargls@comcast.net>
534         * arith.h: Update Copyright dates.  Fix whitespace.
535         * arith.c: Update Copyright dates.  Fix whitespace.  Fix comments.
536         (gfc_arith_done_1): Clean up pedantic_min_int and subnormal.
538 2006-08-26  Tobias Burnus  <burnus@net-b.de>
540         * gfortran.texi: Note variable initialization causes SAVE attribute.
541         * intrinsic.texi: Clarify support for KIND=16 and KIND=10.
542         Mention -std=f2003.  Cross reference INQUIRE from ACCESS intrinsic.
543         Add missing ) in ACOS.
545 2006-08-26  Daniel Franke  <franke.daniel@gmail.com>
547         * intrinsic.texi: Update Copyright date.  Added documentation
548         for ACOSH, AND, ASINH, ATANH, CHDIR, FGET, FGETC, FPUT, FPUTC,
549         GETCWD, OR and XOR intrinsics, removed inadvertently introduced
550         doc-stubs for EQV and NEQV, corrected some typographical errors.
552 2006-08-24  Daniel Franke  <franke.daniel@gmail.com>,
553             Brooks Moses  <bmoses@stanford.edu>
555         * intrinsic.texi: Added doc-stubs for undocumented intrinsics,
556         added a "See Also" section, renamed the "Options" section to
557         "Standard", improved the index, and made numerous minor
558         typo corrections and grammatical fixes.
560 2006-08-24  Paul Thomas  <pault@gcc.gnu.org>
562         PR fortran/28788
563         * symbol.c (shift_types): Shift the derived type references in
564         formal namespaces.
565         (gfc_use_derived): Return if the derived type symbol is already
566         in another namspace.  Add searches for the derived type in
567         sibling namespaces.
569         PR fortran/28771
570         * decl.c (add_init_expr_to_sym): Restore the original but
571         restricted to parameter arrays to fix a regression.
573 2006-08-23  Steven G. Kargl  <kargls@comcast.net>
575         * gfortran.texi:  Fix last commit where a "no" was deleted and
576         a grammatical error was introduced.
578 2006-08-23  Steven G. Kargl  <kargls@comcast.net>
580         * gfortran.texi:  Spell check.  Add a few contributors to
581         Chapter 9.  Expand the description of BOZ constant handling.
583 2006-08-20  Janne Blomqvist  <jb@gcc.gnu.org>
585         PR fortran/25828
586         * gfortran.texi: Mention STREAM I/O among supported F2003
587         features.
589 2006-08-20  Paul Thomas  <pault@gcc.gnu.org>
591         PR fortran/28601
592         PR fortran/28630
593         * gfortran.h : Eliminate gfc_dt_list structure and reference
594         to it in gfc_namespace.
595         * resolve.c (resolve_fl_derived): Remove the building of the
596         list of derived types for the current namespace.
597         * symbol.c (find_renamed_type): New function to find renamed
598         derived types by symbol name rather than symtree name.
599         (gfc_use_derived): Search parent namespace for identical
600         derived type and use it, even if local version is complete,
601         except in interface bodies. Ensure that renamed derived types
602         are found by call to find_renamed_type. Recurse for derived
603         type components.
604         (gfc_free_dt_list): Remove.
605         (gfc_free_namespace): Remove call to previous.
606         * trans-types.c (copy_dt_decls_ifequal): Remove.
607         (gfc_get_derived_type): Remove all the paraphenalia for
608         association of derived types, including calls to previous.
609         * match.c (gfc_match_allocate): Call gfc_use_derived to
610         associate any derived types that are being allocated.
612         PR fortran/20886
613         * resolve.c (resolve_actual_arglist): The passing of
614         a generic procedure name as an actual argument is an
615         error.
617         PR fortran/28735
618         * resolve.c (resolve_variable): Check for a symtree before
619         resolving references.
621         PR fortran/28762
622         * primary.c (match_variable): Return MATCH_NO if the symbol
623         is that of the program.
625         PR fortran/28425
626         * trans-expr.c (gfc_trans_subcomponent_assign): Translate
627         derived type component expressions other than another derived
628         type constructor.
630         PR fortran/28496
631         * expr.c (find_array_section): Correct errors in
632         the handling of a missing start value for the
633         index triplet in an array reference.
635         PR fortran/18111
636         * trans-decl.c (gfc_build_dummy_array_decl): Before resetting
637         reference to backend_decl, set it DECL_ARTIFICIAL.
638         (gfc_get_symbol_decl): Likewise for original dummy decl, when
639         a copy is made of an array.
640         (create_function_arglist): Likewise for the _entry paramter
641         in entry_masters.
642         (build_entry_thunks): Likewise for dummies in entry thunks.
644         PR fortran/28600
645         * trans-decl.c (gfc_get_symbol_decl): Ensure that the
646         DECL_CONTEXT of the length of a character dummy is the
647         same as that of the symbol declaration.
649         PR fortran/28771
650         * decl.c (add_init_expr_to_sym): Remove setting of charlen for
651         an initializer of an assumed charlen variable.
653         PR fortran/28660
654         * trans-decl.c (generate_expr_decls): New function.
655         (generate_dependency_declarations): New function.
656         (generate_local_decl): Call previous if not either a dummy or
657         a declaration in an entry master.
659 2006-08-19  Erik Edelmann  <eedelman@gcc.gnu.org>
661         PR fortran/25217
662         * resolve.c (resolve_fl_variable): Set a default initializer for
663         derived types with INTENT(OUT) even if 'flag' is true.
664         * trans-expr.c (gfc_conv_function_call): Insert code to
665         reinitialize INTENT(OUT) arguments of derived type with default
666         initializers.
668 2006-08-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
670         PR fortran/25828
671         * gfortran.h: Add new pointer for stream position to st_inquire.
672         Rename gfc_large_io_int_kind to gfc_intio_kind.
673         * trans-types.c (gfc_init_kinds): use gfc_intio_kind.
674         * io.c: Add new IO tag for file position going in and another for out.
675         (match_dt_element): Match new tag_spos.
676         (gfc_resolve_dt): Resolve new tag_spos.
677         (gfc_free_inquire): Free inquire->strm_pos.
678         (match_inquire_element): Match new tag_strm_out.
679         (gfc_resolve_inquire): Resolve new tag_strm_out.
680         * trans-io.c: Rename IOPARM_type_large_io_int to IOPARM_type_intio.
681         (gfc_build_st_parameter): Same.
682         (gfc_build_io_library_fndecls) Same. and add build pointer type pintio.
683         (gfc_trans_inquire): Translate strm_pos for inquire.
684         * ioparm.def: Reorder flags to accomodate addition of new inquire
685         flag for strm_pos_out and add it in.
687 2006-08-06  Paul Thomas  <pault@gcc.gnu.org>
689         PR fortran/28590
690         * parse.c (parse_derived): Remove the test for sequence type
691         components of a sequence type.
692         * resolve.c (resolve_fl_derived): Put the test here so that
693         pointer components are tested.
695 2006-08-05  Steven G. Kargl <kargls@comcast.nt>
697         PR fortran/28548
698         * resolve.c(resolve_elemental_actual): Add flags.h to use -pedantic
699         and exclude conversion functions in conditional.  Change gfc_error
700         to gfc_warning.
701         (warn_unused_label) Rename to ...
702         (warn_unused_fortran_label) avoid warn_unused_label in flags.h.
704 2006-07-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
706         * intrinsic.c (add_functions): Add ACCESS, CHMOD, RSHIFT, LSHIFT.
707         (add_subroutines): Add LTIME, GMTIME and CHMOD.
708         * intrinsic.h (gfc_check_access_func, gfc_check_chmod,
709         gfc_check_chmod_sub, gfc_check_ltime_gmtime, gfc_simplify_rshift,
710         gfc_simplify_lshift, gfc_resolve_access, gfc_resolve_chmod,
711         gfc_resolve_rshift, gfc_resolve_lshift, gfc_resolve_chmod_sub,
712         gfc_resolve_gmtime, gfc_resolve_ltime): Add prototypes.
713         * gfortran.h (gfc_generic_isym_id): Add GFC_ISYM_ACCESS,
714         GFC_ISYM_CHMOD, GFC_ISYM_LSHIFT, GFC_ISYM_RSHIFT.
715         * iresolve.c (gfc_resolve_access, gfc_resolve_chmod,
716         gfc_resolve_rshift, gfc_resolve_lshift, gfc_resolve_chmod_sub,
717         gfc_resolve_gmtime, gfc_resolve_ltime): New functions.
718         * check.c (gfc_check_access_func, gfc_check_chmod,
719         gfc_check_chmod_sub, gfc_check_ltime_gmtime): New functions.
720         * trans-intrinsic.c (gfc_conv_intrinsic_rlshift): New function.
721         (gfc_conv_intrinsic_function): Add cases for the new GFC_ISYM_*.
723 2006-07-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
725         * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.
727 2006-07-26  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
729         * intrinsic.c (add_functions): Add INT2, SHORT, INT8, LONG,
730         LSTAT, MCLOCK and MCLOCK8 intrinsic functions.
731         (add_subroutines): Add LSTAT intrinsic subroutine.
732         * gfortran.h (gfc_generic_isym_id): Add GFC_ISYM_INT2,
733         GFC_ISYM_INT8, GFC_ISYM_LONG, GFC_ISYM_LSTAT, GFC_ISYM_MCLOCK
734         and GFC_ISYM_MCLOCK8.
735         * iresolve.c (gfc_resolve_int2, gfc_resolve_int8,
736         gfc_resolve_long, gfc_resolve_lstat, gfc_resolve_mclock,
737         gfc_resolve_mclock8, gfc_resolve_lstat_sub): New functions.
738         * check.c (gfc_check_intconv): New function.
739         * trans-intrinsic.c (gfc_conv_intrinsic_function): Add cases for
740         the added GFC_ISYM_*.
741         * simplify.c (gfc_simplify_intconv, gfc_simplify_int2,
742         gfc_simplify_int8, gfc_simplify_long): New functions.
743         * intrinsic.h (gfc_check_intconv, gfc_simplify_int2,
744         gfc_simplify_int8, gfc_simplify_long, gfc_resolve_int2,
745         gfc_resolve_int8, gfc_resolve_long, gfc_resolve_lstat,
746         gfc_resolve_mclock, gfc_resolve_mclock8, gfc_resolve_lstat_sub):
747         Add prototypes.
749 2006-07-24  Erik Edelmann  <eedelman@gcc.gnu.org>
751         PR fortran/28416
752         * trans-array.c (gfc_conv_array_parameter): Give special treatment for
753         ALLOCATABLEs if they are themselves dummy variables.
755 2006-07-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
757         PR fortran/25289
758         * gfortran.h: Declare gfc_large_io_int_kind.
759         * trans-types.c (gfc_init_kinds): Set gfc_large_io_int_kind
760         to size 8 or 4.
761         * trans-io.c (enum iofield_type): Add large_io_int type.
762         (gfc_build_st_parameter): Same.
763         (gfc_build_io_library_fndecls): Same.
764         * ioparm_def: Use large_io_int to define rec.
766 2006-07-22  Steven Bosscher  <steven@gcc.gnu.org> 
768         PR fortran/28439
769         * trans-stmt.c (gfc_trans_arithmetic_if): Evaluate the condition once.
771 2006-07-16  Jakub Jelinek  <jakub@redhat.com>
773         PR fortran/28390
774         * trans-openmp.c (gfc_trans_omp_do): Look for LASTPRIVATE in
775         code->exp.omp_clauses rather than in the 3rd function argument.
777 2006-07-16  Paul Thomas  <pault@gcc.gnu.org>
779         PR fortran/28384
780         * trans-common.c (translate_common): If common_segment is NULL
781         emit error that common block does not exist.
783         PR fortran/20844
784         * io.c (check_io_constraints): It is an error if an ADVANCE
785         specifier appears without an explicit format.
787         PR fortran/28201
788         * resolve.c (resolve_generic_s): For a use_associated function,
789         do not search for an alternative symbol in the parent name
790         space.
792         PR fortran/20893
793         * resolve.c (resolve_elemental_actual): New function t combine
794         all the checks of elemental procedure actual arguments. In
795         addition, check of array valued optional args(this PR) has
796         been added.
797         (resolve_function, resolve_call): Remove parts that treated
798         elemental procedure actual arguments and call the above.
800 2006-07-14  Steven G. Kargl  <kargls@comcast.net>
802         * trans-expr.c (gfc_trans_string_copy): Evaluate the string lengths
804 006-07-13  Paul Thomas  <pault@gcc.gnu.org>
806         PR fortran/28353
807         * trans-expr.c (gfc_conv_aliased_arg): Missing formal arg means
808         that intent is INOUT (fixes regression).
810         PR fortran/25097
811         * check.c (check_present): The only permitted reference is a
812         full array reference.
814         PR fortran/20903
815         * decl.c (variable_decl): Add error if a derived type is not
816         from the current namespace if the namespace is an interface
817         body.
819 2006-07-12  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
821         PR fortran/28163
822         * trans-expr.c (gfc_trans_string_copy): Generate inline code
823         to perform string copying instead of calling a library function.
824         * trans-decl.c (gfc_build_intrinsic_function_decls): Don't build
825         decl for copy_string.
826         * trans.h (gfor_fndecl_copy_string): Remove prototype.
828 2006-07-11  Feng Wang  <fengwang@nudt.edu.cn>
830         PR fortran/28213
831         * trans-io.c (transfer_expr): Deal with Hollerith constants used in
832         I/O list.
834 2006-07-07  Kazu Hirata  <kazu@codesourcery.com>
836         * intrinsic.texi: Fix typos.
838 2006-07-07  Paul Thomas  <pault@gcc.gnu.org>
840         PR fortran/28237
841         PR fortran/23420
842         * io.c (resolve_tag): Any integer that is not an assigned
843         variable is an error.
845 2006-07-06  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
847         PR fortran/28129
848         * trans-array.c (gfc_trans_array_bound_check): Add a locus
849         argument, and use it in the error messages.
850         (gfc_conv_array_index_offset): Donc perform bounds checking on
851         the last dimension of assumed-size arrays.
853 2006-07-06  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
855         PR fortran/27874
856         * trans-stmt.c (compute_inner_temp_size): Don't perform bounds
857         checking when calculating the bounds of scalarization.
859 2006-07-05  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
861         PR fortran/20892
862         * interface.c (gfc_match_interface): Don't allow dummy procedures
863         to have a generic interface.
865 2006-07-04  Paul Thomas  <pault@gcc.gnu.org>
867         PR fortran/28174
868         * trans-array.c (gfc_conv_expr_descriptor): When building temp,
869         ensure that the substring reference uses a new charlen.
870         * trans-expr.c (gfc_conv_aliased_arg): Add the formal intent to
871         the argument list, lift the treatment of missing string lengths
872         from the above and implement the use of the intent.
873         (gfc_conv_function_call): Add the extra argument to the call to
874         the above.
876         PR fortran/28167
877         * trans-array.c (get_array_ctor_var_strlen): Treat a constant
878         substring reference.
879         * array.c (gfc_resolve_character_array_constructor): Remove 
880         static attribute and add the gfc_ prefix, make use of element
881         charlens for the expression and pick up constant string lengths
882         for expressions that are not themselves constant.
883         * gfortran.h : resolve_character_array_constructor prototype
884         added.
885         * resolve.c (gfc_resolve_expr): Call resolve_character_array_
886         constructor again after expanding the constructor, to ensure
887         that the character length is passed to the expression.
889 2006-07-04  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
890             Daniel Franke  <franke.daniel@gmail.com>
892         * intrinsic.c (add_subroutines): Add ITIME and IDATE.
893         * intrinsic.h (gfc_check_itime_idate,gfc_resolve_idate,
894         fc_resolve_itime): New protos.
895         * iresolve.c (gfc_resolve_itime, gfc_resolve_idate): New functions.
896         * check.c (gfc_check_itime_idate): New function.
897         * intrinsic.texi: Document the new intrinsics.
899 2006-07-03  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
901         * intrinsics/date_and_time.c (itime0,idate0,itime_i4,itime_i8,
902         idate_i4,idate_i8): New functions.
905 2006-07-03  Asher Langton  <langton2@llnl.gov>
907         * decl.c (match_old_style_init): Add data attribute to symbol.
909 2006-07-03  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
911         * iresolve.c (gfc_resolve_cpu_time, gfc_resolve_random_number):
912         Remove ATTRIBUTE_UNUSED for used argument.
914 2006-07-03  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
916         * intrinsic.texi: Document new intrinsics.
918 2006-07-01  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
920         PR fortran/19259
921         * parse.c (next_free): Error out on line starting with semicolon.
922         (next_fixed): Fix formatting.  Error out on line starting with
923         semicolon.
925 2006-06-30  Kazu Hirata  <kazu@codesourcery.com>
927         * check.c: Fix a comment typo.
929 2006-06-25  Paul Thomas  <pault@gcc.gnu.org>
931         PR fortran/25056
932         * interface.c (compare_actual_formal): Signal an error if the formal
933         argument is a pure procedure and the actual is not pure.
935         PR fortran/27554
936         * resolve.c (resolve_actual_arglist): If the type of procedure
937         passed as an actual argument is not already declared, see if it is
938         an intrinsic.
940         PR fortran/25073
941         * resolve.c (resolve_select): Use bits 1 and 2 of a new int to
942         keep track of  the appearance of constant logical case expressions.
943         Signal an error is either value appears more than once.
945         PR fortran/20874
946         * resolve.c (resolve_fl_procedure): Signal an error if an elemental
947         function is not scalar valued.
949         PR fortran/20867
950         * match.c (recursive_stmt_fcn): Perform implicit typing of variables.
952         PR fortran/22038
953         * match.c (match_forall_iterator): Mark new variables as
954         FL_UNKNOWN if the match fails.
956         PR fortran/28119
957         * match.c (gfc_match_forall): Remove extraneous call to
958         gfc_match_eos.
960         PR fortran/25072
961         * resolve.c (resolve_code, resolve_function): Rework
962         forall_flag scheme so that it is set and has a value of
963         2, when the code->expr (ie. the forall mask) is resolved.
964         This is used to change "block" to "mask" in the non-PURE
965         error message.
967 2006-06-24  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
969         PR fortran/28081
970         * resolve.c (resolve_substring): Don't issue out-of-bounds
971         error messages when the range has zero size.
973 2006-06-24  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
975         PR fortran/23862
976         * lang-specs.h (f95-cpp-input): Pass -ffree-form to f951 unless
977         -ffixed-form is explicitly specified.
979 2006-06-24  Paul Thomas  <pault@gcc.gnu.org>
981         PR fortran/28118
982         * trans-array.c (gfc_conv_expr_descriptor): When building temp,
983         use the substring reference to calculate the length if the
984         expression does not have a charlen.
986 2006-06-24  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
988         PR fortran/28094
989         * trans-intrinsic.c (gfc_conv_intrinsic_mod): Support cases where
990         there is no integer kind equal to the resulting real kind.
991         * intrinsic.c (add_functions): MODULO is not allowed as an actual
992         argument.
994 2006-06-23  Steven G. Kargl  <kargls@comcast.net>
996         PR fortran/27981
997         * match.c (gfc_match_if):  Handle errors in assignment in simple if.
999 2006-06-22  Asher Langton  <langton2@llnl.gov>
1001         PR fortran/24748
1002         * primary.c (gfc_match_rvalue): Don't call match_substring for
1003         implicit non-character types.
1005 2006-06-22  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1007         PR libfortran/26769
1008         * iresolve.c (gfc_resolve_reshape): Call reshape_r4 and
1009         reshape_r8 instead of reshape_4 and reshape_8.
1010         (gfc_resolve_transpose): Likewise for transpose.
1012 2006-06-21  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1014         * trans-expr.c (gfc_conv_missing_dummy, gfc_conv_unary_op,
1015         gfc_conv_cst_int_power, gfc_conv_string_tmp,
1016         gfc_conv_function_call): Replace calls to convert on constant
1017         integer nodes by build_int_cst.
1018         * trans-stmt.c (gfc_trans_do): Likewise.
1019         * trans-io.c (set_internal_unit, transfer_namelist_element):
1020         Likewise.
1021         * trans-decl.c (build_entry_thunks): Likewise.
1023 2006-06-20  Steven G. Kargl  <kargls@comcast.net>
1025         * simplify.c (gfc_simplify_rrspacing): Initialize and clear mpfr_t
1026         variable.
1028 2006-06-20  Paul Thomas  <pault@gcc.gnu.org>
1030         PR fortran/25049
1031         PR fortran/25050
1032         * check.c (non_init_transformational): New function.
1033         (find_substring_ref): New function to signal use of disallowed
1034         transformational intrinsic in an initialization expression.
1035         (gfc_check_all_any): Call previous if initialization expr.
1036         (gfc_check_count): The same.
1037         (gfc_check_cshift): The same.
1038         (gfc_check_dot_product): The same.
1039         (gfc_check_eoshift): The same.
1040         (gfc_check_minloc_maxloc): The same.
1041         (gfc_check_minval_maxval): The same.
1042         (gfc_check_gfc_check_product_sum): The same.
1043         (gfc_check_pack): The same.
1044         (gfc_check_spread): The same.
1045         (gfc_check_transpose): The same.
1046         (gfc_check_unpack): The same.
1048         PR fortran/18769
1049         *intrinsic.c (add_functions): Add gfc_simplify_transfer.
1050         *intrinsic.h : Add prototype for gfc_simplify_transfer.
1051         *simplify.c (gfc_simplify_transfer) : New function to act as
1052         placeholder for eventual implementation.  Emit error for now.
1054         PR fortran/16206
1055         * expr.c (find_array_element): Eliminate condition on length of
1056         offset. Add bounds checking. Rearrange exit. Return try and
1057         put gfc_constructor result as an argument.
1058         (find_array_section): New function.
1059         (find_substring_ref): New function.
1060         (simplify_const_ref): Add calls to previous.
1061         (simplify_parameter_variable): Return on NULL expr.
1062         (gfc_simplify_expr): Only call gfc_expand_constructor for full
1063         arrays.
1065         PR fortran/20876
1066         * match.c (gfc_match_forall): Add missing locus to gfc_code.
1068 2006-06-18  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1070         PR fortran/26801
1071         * trans-intrinsic.c (gfc_conv_associated): Use pre and post blocks
1072         of the scalarization expression.
1074 2006-06-18  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1076         PR fortran/19310
1077         PR fortran/19904
1078         * arith.c (gfc_range_check): Return ARITH_OK if -fno-range-check. Add
1079         return of ARITH_NAN, ARITH_UNDERFLOW, and ARITH_OVERFLOW.
1080         (gfc_arith_divide): If -fno-range-check allow mpfr to divide by zero.
1081         * gfortran.h (gfc_option_t): Add new flag.
1082         * invoke.texi: Document new flag.
1083         * lang.opt: Add option -frange-check.
1084         * options.c (gfc_init_options): Initialize new flag.
1085         (gfc_handle_options): Set flag if invoked.
1086         * simplify.c (range_check): Add error messages for
1087         overflow, underflow, and other errors.
1088         * trans-const.c (gfc_conv_mpfr_to_tree): Build NaN and Inf from mpfr
1089         result.
1091 2006-06-17  Karl Berry  <karl@gnu.org>
1093         * gfortran.texi (@dircategory): Use "Software development"
1094         instead of "Programming", following the Free Software Directory.
1096 2006-06-16  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1098         PR fortran/27965
1099         * trans-array.c (gfc_conv_ss_startstride): Correct the runtime
1100         conditions for bounds-checking. Check for nonzero stride.
1101         Don't check the last dimension of assumed-size arrays. Fix the
1102         dimension displayed in the error message.
1104 2006-06-15  Thomas Koenig <Thomas.Koenig@online.de>
1106         * trans-array.h (gfc_trans_create_temp_array):  Add bool
1107         argument.
1108         * trans-arrray.c (gfc_trans_create_temp_array): Add extra
1109         argument "function" to show if we are translating a function.
1110         If we are translating a function, perform checks whether
1111         the size along any argument is negative.  In that case,
1112         allocate size 0.
1113         (gfc_trans_allocate_storage):  Add function argument (as
1114         false) to gfc_trans_create_temp_array call.
1115         * trans-expr.c (gfc_conv_function_call):  Add function
1116         argument (as true) to gfc_trans_create_temp_array call.
1117         * trans-stmt.c (gfc_conv_elemental_dependencies): Add
1118         function argument (as false) to gfc_trans_create_temp_array
1119         call.
1120         * trans-intrinsic.c:  Likewise.
1122 2006-06-10  Paul Thomas  <pault@gcc.gnu.org>
1124         PR fortran/24558
1125         PR fortran/20877
1126         PR fortran/25047
1127         * decl.c (get_proc_name): Add new argument to flag that a
1128         module function entry is being treated. If true, correct
1129         error condition, add symtree to module namespace and add
1130         a module procedure.
1131         (gfc_match_function_decl, gfc_match_entry,
1132         gfc_match_subroutine): Use the new argument in calls to
1133         get_proc_name.
1134         * resolve.c (resolve_entries): ENTRY symbol reference to
1135         to master entry namespace if a module function.
1136         * trans-decl.c (gfc_create_module_variable): Return if
1137         the symbol is an entry.
1138         * trans-exp.c (gfc_conv_variable): Check that parent_decl
1139         is not NULL.
1141 2006-06-09  Jakub Jelinek  <jakub@redhat.com>
1143         PR fortran/27916
1144         * trans-openmp.c (gfc_omp_clause_default_ctor): New function.
1145         * trans.h (gfc_omp_clause_default_ctor): New prototype.
1146         * f95-lang.c (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): Define.
1148 2006-06-08  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1150         PR fortran/27958
1151         * trans-expr.c (gfc_conv_substring): If the substring start is
1152         greater than its end, the length of the substring is zero, and
1153         not negative.
1154         (gfc_trans_string_copy): Don't generate a call to
1155         _gfortran_copy_string when destination length is zero.
1157 2006-06-08  Asher Langton  <langton2@llnl.gov>
1158         
1159         PR fortran/27786
1160         * trans-array.c (gfc_conv_array_ref): Eliminate bounds checking
1161         for assumed-size Cray pointees.
1163 2006-06-08  Steven G. Kargl  <kargls@comcat.net>
1165         * intrinsic.c (add_subroutine):  Make make_noreturn() conditional on
1166         the appropriate symbol name.
1167         
1168 2006-06-07  Paul Thomas  <pault@gcc.gnu.org>
1170         PR fortran/23091
1171         * resolve.c (resolve_fl_variable): Error if an automatic
1172         object has the SAVE attribute.
1174         PR fortran/24168
1175         * expr.c (simplify_intrinsic_op): Transfer the rank and
1176         the locus to the simplified expression.
1178         PR fortran/25090
1179         PR fortran/25058
1180         * gfortran.h : Add int entry_id to gfc_symbol.
1181         * resolve.c : Add static variables current_entry_id and
1182         specification_expr.
1183         (resolve_variable): During code resolution, check if a
1184         reference to a dummy variable in an executable expression
1185         is preceded by its appearance as a parameter in an entry.
1186         Likewise check its specification expressions.
1187         (resolve_code): Update current_entry_id on EXEC_ENTRY.
1188         (resolve_charlen, resolve_fl_variable): Set and reset
1189         specifiaction_expr.
1190         (is_non_constant_shape_array): Do not return on detection
1191         of a variable but continue to resolve all the expressions.
1192         (resolve_codes): set current_entry_id to an out of range
1193         value.
1195 2006-06-06  Mike Stump  <mrs@apple.com>
1197         * Make-lang.in: Rename to htmldir to build_htmldir to avoid
1198         installing during build.
1200 2006-06-06  Paul Thomas  <pault@gcc.gnu.org>
1202         PR fortran/27897
1203         * match.c (gfc_match_common):  Fix code typo.  Remove
1204         sym->name, since sym is NULL, and replace with name.
1206 2006-06-05  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1208         PR libfortran/27895
1209         * resolve.c (compute_last_value_for_triplet): New function.
1210         (check_dimension): Correctly handle zero-sized array sections.
1211         Add checking on last element of array sections.
1213 2006-06-05  Steven G. Kargl  <kargls@comcast.net>
1215         * data.c (gfc_assign_data_value):  Fix comment typo.  Remove
1216         a spurious return.
1218 2006-06-05  Paul Thomas  <pault@gcc.gnu.org>
1220         PR fortran/14067
1221         * data.c (create_character_intializer): Add warning message
1222         for truncated string.
1224         PR fortran/16943
1225         * symbol.c : Include flags.h.
1226         (gfc_add_type): If a procedure and types are the same do not
1227         throw an error unless standard is less than gnu or pedantic.
1229         PR fortran/20839
1230         * parse.c (parse_do_block): Error if named block do construct
1231         does not have a named enddo.
1233         PR fortran/27655
1234         * check.c (gfc_check_associated): Pick up EXPR_NULL for pointer
1235         as well as target and put error return at end of function.
1237 2006-06-03  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1239         * trans.c (gfc_msg_bounds, gfc_msg_fault, gfc_msg_wrong_return):
1240         Add strings for common runtime error messages.
1241         (gfc_trans_runtime_check): Add a locus argument, use a string
1242         and not a string tree for the message.
1243         * trans.h (gfc_trans_runtime_check): Change prototype accordingly.
1244         (gfc_msg_bounds, gfc_msg_fault, gfc_msg_wrong_return): Add proto.
1245         * trans-const.c (gfc_strconst_bounds, gfc_strconst_fault,
1246         gfc_strconst_wrong_return, gfc_strconst_current_filename): Remove.
1247         (gfc_init_constants): Likewise.
1248         * trans-const.h: Likewise.
1249         * trans-decl.c (gfc_build_builtin_function_decls): Call to
1250         _gfortran_runtime_error has only one argument, the message string.
1251         * trans-array.h (gfc_conv_array_ref): Add a symbol argument and a
1252         locus.
1253         * trans-array.c (gfc_trans_array_bound_check): Build precise
1254         error messages.
1255         (gfc_conv_array_ref): Use the new symbol argument and the locus
1256         to build more precise error messages.
1257         (gfc_conv_ss_startstride): More precise error messages.
1258         * trans-expr.c (gfc_conv_variable): Give symbol reference and
1259         locus to gfc_conv_array_ref.
1260         (gfc_conv_function_call): Use the new prototype for
1261         gfc_trans_runtime_check.
1262         * trans-stmt.c (gfc_trans_goto): Build more precise error message.
1263         * trans-io.c (set_string): Likewise.
1264         * trans-intrinsic.c (gfc_conv_intrinsic_bound): Use new prototype
1265         for gfc_trans_runtime_check.
1267 2006-06-01  Thomas Koenig  <Thomas.Koenig@online.de>
1269         PR fortran/27715
1270         * arith.c:  Cast the characters from the strings to unsigned
1271         char to avoid values less than 0 for extended ASCII.
1273 2006-06-01  Per Bothner  <bothner@bothner.com>
1275         * data.c (gfc_assign_data_value): Handle USE_MAPPED_LOCATION.
1276         * scanner.c (gfc_gobble_whitespace): Likewise.
1278 2006-06-01  Paul Thomas  <pault@gcc.gnu.org>
1280         PR fortran/25098
1281         PR fortran/25147
1282         * interface.c (compare_parameter): Return 1 if the actual arg
1283         is external and the formal is a procedure.
1284         (compare_actual_formal): If the actual argument is a variable
1285         and the formal a procedure, this an error.  If a gsymbol exists
1286         for a procedure of the same name, this is not yet resolved and
1287         the error is cleared.
1289         * trans-intrinsic.c (gfc_conv_associated): Make provision for
1290         zero array length or zero string length contingent on presence
1291         of target, for consistency with standard.
1293 2006-05-30  Asher Langton  <langton2@llnl.gov>
1295         * symbol.c (check_conflict): Allow external, function, and
1296         subroutine attributes with Cray pointees.
1297         * trans-expr.c (gfc_conv_function_val): Translate Cray pointees
1298         that point to procedures.
1299         * gfortran.texi: Document new feature.
1301 2006-05-29  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1303         PR fortran/27634
1304         * io.c (check_format): Add error for missing period in format
1305         specifier unless -std=legacy.
1306         * gfortran.texi: Add description of expanded namelist read and
1307         missing period in format extensions.
1309 2006-05-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1311         PR fortran/19777
1312         * trans-array.c (gfc_conv_array_ref): Perform out-of-bounds
1313         checking for assumed-size arrrays for all but the last dimension.
1315 2006-05-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1317         * invoke.texi: Change -fpackderived into -fpack-derived.
1319 2006-05-29  Kazu Hirata  <kazu@codesourcery.com>
1321         * options.c, primary.c, resolve.c, trans-common.c: Fix typos
1322         in error messages.
1324 2006-05-28  Kazu Hirata  <kazu@codesourcery.com>
1326         * check.c, expr.c, resolve.c, trans-common.c,
1327         trans-intrinsic.c, trans-stmt.c, trans-types.c: Fix comment typos.
1329 2006-05-27  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1331         PR fortran/19777
1332         * trans-array.c (gfc_conv_array_ref): Don't perform out-of-bounds
1333         checking for assumed-size arrrays.
1335 2006-05-27  Paul Thomas  <pault@gcc.gnu.org>
1337         * trans-intrinsic.c (gfc_conv_associated): If pointer in first
1338         arguments has zero array length of zero string length, return
1339         false.
1341 2006-05-26  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1343         PR fortran/27524
1344         * trans-array.c (gfc_trans_dummy_array_bias): Don't use stride as
1345         a temporary variable when -fbounds-check is enabled, since its
1346         value will be needed later.
1348 2006-05-26  Thomas Koenig  <Thomas.Koenig@online.de>
1350         PR fortran/23151
1351         * io.c (match_io):  print (1,*) is an error.
1353 2006-05-26  Paul Thomas  <pault@gcc.gnu.org>
1355         PR fortran/27709
1356         * resolve.c (find_array_spec): Add gfc_symbol, derived, and
1357         use to track repeated component references.
1359         PR fortran/27155
1360         PR fortran/27449
1361         * trans-intrinsic.c (gfc_conv_intrinsic_array_transfer): Use
1362         se->string_length throughout and use memcpy to populate the
1363         expression returned to the scalarizer.
1364         (gfc_size_in_bytes): New function.
1366 2006-05-21  Paul Thomas  <pault@gcc.gnu.org>
1368         PR fortran/27613
1369         * primary.c (gfc_match_rvalue): Test if symbol represents a
1370         direct recursive function reference.  Error if array valued,
1371         go to function0 otherwise.
1373 2006-05-21  Paul Thomas  <pault@gcc.gnu.org>
1375         PR fortran/25746
1376         * interface.c (gfc_extend_assign): Use new EXEC_ASSIGN_CALL.
1377         * gfortran.h : Put EXEC_ASSIGN_CALL in enum.
1378         * trans-stmt.c (gfc_conv_elemental_dependencies): New function.
1379         (gfc_trans_call): Call it.  Add new boolian argument to flag
1380         need for dependency checking. Assert intent OUT and IN for arg1
1381         and arg2.
1382         (gfc_trans_forall_1): Use new code EXEC_ASSIGN_CALL.
1383         trans-stmt.h : Modify prototype of gfc_trans_call.
1384         trans.c (gfc_trans_code): Add call for EXEC_ASSIGN_CALL.
1385         st.c (gfc_free_statement): Free actual for EXEC_ASSIGN_CALL.
1386         * dependency.c (gfc_check_fncall_dependency): Don't check other
1387         against itself.
1389         PR fortran/25090
1390         * resolve.c : Remove resolving_index_expr.
1391         (entry_parameter): Remove.
1392         (gfc_resolve_expr, resolve_charlen, resolve_fl_variable): Lift
1393         calls to entry_parameter and references to resolving_index_expr.
1395         PR fortran/27584
1396         * check.c (gfc_check_associated): Replace NULL assert with an
1397         error message, since it is possible to generate bad code that
1398         has us fall through to here..
1400         PR fortran/19015
1401         * iresolve.c (maxloc, minloc): If DIM is not present, pass the
1402         rank of ARRAY as the shape of the result.  Otherwise, pass the
1403         shape of ARRAY, less the dimension DIM.
1404         (maxval, minval): The same, when DIM is present, otherwise no
1405         change.
1407 2006-05-19  H.J. Lu  <hongjiu.lu@intel.com>
1409         PR fortran/27662
1410         * trans-array.c (gfc_conv_expr_descriptor): Don't zero the
1411         first stride to indicate a temporary.
1412         * trans-expr.c (gfc_conv_function_call): Likewise.
1414 2006-05-18  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1415             Feng Wang  <fengwang@nudt.edu.cn>
1417         PR fortran/27552
1418         * dump-parse-tree.c (gfc_show_expr): Deal with Hollerith constants.
1419         * data.c (create_character_intializer): Set from_H flag if character is
1420         initialized by Hollerith constant.
1422 2006-05-17  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1424         PR fortran/26551
1425         * resolve.c (resolve_call, resolve_function): Issue an error
1426         if a function or subroutine call is recursive but the function or
1427         subroutine wasn't declared as such.
1429 2006-05-07  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1431         PR fortran/26551
1432         * gfortran.dg/recursive_check_1.f: New test.
1435 2006-05-17  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1437         PR fortran/27320
1438         * dump-parse-tree.c (gfc_show_code_node): Try harder to find the
1439         called procedure name.
1441 2006-05-17  Jakub Jelinek  <jakub@redhat.com>
1443         PR middle-end/27415
1444         * trans-openmp.c (gfc_trans_omp_parallel_do,
1445         gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare): Set
1446         OMP_PARALLEL_COMBINED flag.
1448 2006-05-16  H.J. Lu  <hongjiu.lu@intel.com>
1450         PR driver/26885
1451         * Make-lang.in (GFORTRAN_D_OBJS): Replace gcc.o with
1452         $(GCC_OBJS).
1454 2006-05-15  Paul Thomas  <pault@gcc.gnu.org>
1456         PR fortran/25090
1457         * resolve.c: Static resolving_index_expr initialized.
1458         (entry_parameter): New function to emit errors for variables
1459         that are not entry parameters.
1460         (gfc_resolve_expr): Call entry_parameter, when resolving
1461         variables, if the namespace has entries and resolving_index_expr
1462         is set.
1463         (resolve_charlen): Set resolving_index_expr before the call to
1464         resolve_index_expr and reset it afterwards.
1465         (resolve_fl_variable): The same before and after the call to
1466         is_non_constant_shape_array, which ultimately makes a call to
1467         gfc_resolve_expr.
1469         PR fortran/25082
1470         * resolve.c (resolve_code): Add error condition that the return
1471         expression must be scalar.
1473         PR fortran/27411
1474         * matchexp.c (gfc_get_parentheses): New function.
1475         (match_primary): Remove inline code and call above.
1476         * gfortran.h: Provide prototype for gfc_get_parentheses.
1477         * resolve.c (resolve_array_ref): Call the above, when start is a
1478         derived type variable array reference.
1480 2006-05-15  Jakub Jelinek  <jakub@redhat.com>
1482         PR fortran/27446
1483         * trans-openmp.c (gfc_trans_omp_array_reduction): Ensure
1484         OMP_CLAUSE_REDUCTION_{INIT,MERGE} are set to BIND_EXPR.
1486 2006-05-14  H.J. Lu  <hongjiu.lu@intel.com>
1488         * Make-lang.in (fortran/options.o): Depend on $(TARGET_H).
1490 2006-05-11  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1492         PR fortran/27553
1493         * parse.c (next_free): Return instead of calling decode_statement
1494         upon error.
1496 2005-05-10  Thomas Koenig  <Thomas.Koenig@online.de>
1498         PR fortran/27470
1499         * trans-array.c(gfc_array_allocate):  If ref->next exists
1500         that is if there is a statement like ALLOCATE(foo%bar(2)),
1501         F95 rules require that bar should be a pointer.
1503 2006-05-10  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1505         PR fortran/20460
1506         * resolve.c (gfc_resolve_index): Make REAL array indices a
1507         GFC_STD_LEGACY feature.
1509 2006-05-10  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1511         PR fortran/24549
1512         * parse.c (reject_statement): Clear gfc_new_block.
1514 2006-05-09  Steven G. Kargl  <kargls@comcast.net>
1516         * invoke.texi: Missed file in previous commit.  Update
1517          description of -fall-intrinsics
1519 2006-05-07  Steven Boscher  <steven@gcc.gnu.org>
1521         PR fortran/27378
1522         * parse.c (next_statement): Add check to avoid an ICE when
1523         gfc_current_locus.lb is not set.
1525 2006-05-07  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
1527         PR fortran/27457
1528         * match.c (match_case_eos): Error out on garbage following
1529         CASE(...).
1531 2006-05-07  Paul Thomas  <pault@gcc.gnu.org>
1533         PR fortran/24813
1534         * trans-array.c (get_array_ctor_strlen): Remove static attribute.
1535         * trans.h: Add prototype for get_array_ctor_strlen.
1536         * trans-intrinsic.c (gfc_conv_intrinsic_len): Switch on EXPR_ARRAY
1537         and call get_array_ctor_strlen.
1539 2006-05-05  Steven G. Kargl  <kargls@comcast.net>
1541         * invoke.texi: Update description of -fall-intrinsics
1542         * options.c (gfc_post_options): Disable -Wnonstd-intrinsics if
1543         -fall-intrinsics is used.
1544         (gfc_handle_option): Permit -Wno-nonstd-intrinsics.
1546 2006-05-04  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
1548         * simplify.c (ascii_table): Fix wrong entry.
1550 2006-05-02  Steven G. Kargl  <kargls@comcast.net>
1552         PR fortran/26896
1553         * lang.opt: Fix -Wtab description
1555         PR fortran/20248  
1556         * lang.opt: New flag -fall-intrinsics.
1557         * invoke.texi:  Document option.
1558         * gfortran.h (options_t):  New member flag_all_intrinsics.
1559         * options.c (gfc_init_options, gfc_handle_option): Set new option.
1560         sort nearby misplaced options.
1561         * intrinsic.c (add_sym, make_generic, make_alias):  Use it.
1563 2006-05-02 Paul Thomas <pault@gcc.gnu.org>
1565         PR fortran/27269
1566         * module.c: Add static flag in_load_equiv.
1567         (mio_expr_ref): Return if no symtree and in_load_equiv.
1568         (load_equiv): If any of the equivalence members have no symtree, free
1569         the equivalence and the associated expressions.
1571         PR fortran/27324
1572         * trans-common.c (gfc_trans_common): Invert the order of calls to
1573         finish equivalences and gfc_commit_symbols.
1575 2006-04-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1577         PR fortran/25681
1578         * simplify.c (simplify_len): Character variables with constant
1579         length can be simplified.
1581 2006-04-29  H.J. Lu  <hongjiu.lu@intel.com>
1583         PR fortran/27351
1584         * trans-array.c (gfc_conv_array_transpose): Move gcc_assert
1585         before gfc_conv_expr_descriptor.
1587 2006-04-23  Paul Thomas  <pault@gcc.gnu.org>
1589         PR fortran/25099
1590         * resolve.c (resolve_call): Check conformity of elemental
1591         subroutine actual arguments.
1593 2006-04-22  Jakub Jelinek  <jakub@redhat.com>
1595         PR fortran/26769
1596         * iresolve.c (gfc_resolve_reshape): Use reshape_r16 for real(16).
1597         (gfc_resolve_transpose): Use transpose_r16 for real(16).
1599 2006-04-21 Paul Thomas <pault@gcc.gnu.org>
1601         PR fortran/27122
1602         * resolve.c (resolve_function): Remove general restriction on auto
1603         character length function interfaces.
1604         (gfc_resolve_uops): Check restrictions on defined operator
1605         procedures.
1606         (resolve_types): Call the check for defined operators.
1608         PR fortran/27113
1609         * trans-array.c (gfc_trans_array_constructor_subarray): Remove
1610         redundant gfc_todo_error.
1611         (get_array_ctor_var_strlen): Remove typo in enum.
1613 2006-04-18  Bernhard Fischer  <aldot@gcc.gnu.org>
1615         * parse.c (next_free): Use consistent error string between
1616         free-form and fixed-form for illegal statement label of zero.
1617         (next_fixed): Use consistent warning string between free-form
1618         and fixed-form for statement labels for empty statements.
1620 2006-04-18  Steve Ellcey  <sje@cup.hp.com>
1622         * trans-io.c (gfc_build_io_library_fndecls): Align pad.
1624 2006-04-16  Thomas Koenig  <Thomas.Koenig@online.de>
1626         PR fortran/26017
1627         * trans-array.c(gfc_array_init_size):  Introduce or_expr
1628         which is true if the size along any dimension
1629         is negative.  Create a temporary variable with base
1630         name size.  If or_expr is true, set the temporary to 0,
1631         to the normal size otherwise.
1633 2006-04-16  Paul Thomas  <pault@gcc.gnu.org>
1635         PR fortran/26822
1636         * intrinsic.c (add_functions): Mark LOGICAL as elemental.
1638         PR fortran/26787
1639         * expr.c (gfc_check_assign): Extend scope of error to include
1640         assignments to a procedure in the main program or, from a
1641         module or internal procedure that is not that represented by
1642         the lhs symbol. Use VARIABLE rather than l-value in message.
1644         PR fortran/27096
1645         * trans-array.c (gfc_trans_deferred_array): If the backend_decl
1646         is not a descriptor, dereference and then test and use the type.
1648         PR fortran/25597
1649         * trans-decl.c (gfc_trans_deferred_vars): Check if an array
1650         result, is also automatic character length.  If so, process
1651         the character length.
1653         PR fortran/18003
1654         PR fortran/25669
1655         PR fortran/26834
1656         * trans_intrinsic.c (gfc_walk_intrinsic_bound): Set
1657         data.info.dimen for bound intrinsics.
1658         * trans_array.c (gfc_conv_ss_startstride): Pick out LBOUND and
1659         UBOUND intrinsics and supply their shape information to the ss
1660         and the loop.
1662         PR fortran/27124
1663         * trans_expr.c (gfc_trans_function_call):  Add a new block, post,
1664         in to which all the argument post blocks are put.  Add this block
1665         to se->pre after a byref call or to se->post, otherwise.
1667 2006-04-14  Roger Sayle  <roger@eyesopen.com>
1669         * trans-io.c (set_string): Use fold_build2 and build_int_cst instead
1670         of build2 and convert to construct "x < 0" rather than "x <= -1".
1672 2006-04-13  Richard Henderson  <rth@redhat.com>
1674         * trans-openmp.c (gfc_trans_omp_sections): Adjust for changed
1675         number of operands to OMP_SECTIONS.
1677 2006-04-08  Kazu Hirata  <kazu@codesourcery.com>
1679         * gfortran.texi: Fix typos.  Follow spelling conventions.
1680         * resolve.c, trans-expr.c, trans-stmt.c: Fix comment typos.
1681         Follow spelling conventions.
1683 2006-04-05  Roger Sayle  <roger@eyesopen.com>
1685         * dependency.c (get_no_elements): Delete function.
1686         (get_deps): Delete function.
1687         (transform_sections): Delete function.
1688         (gfc_check_section_vs_section): Significant rewrite.
1690 2006-04-04  H.J. Lu  <hongjiu.lu@intel.com>
1692         PR fortran/25619
1693         * trans-array.c (gfc_conv_expr_descriptor): Only dereference
1694         character pointer when copying temporary.
1696         PR fortran/23634
1697         * trans-array.c (gfc_conv_expr_descriptor): Properly copy
1698         temporary character with non constant size.
1700 2006-04-03  Paul Thomas  <pault@gcc.gnu.org>
1702         PR fortran/26891
1703         * trans.h: Prototype for gfc_conv_missing_dummy.
1704         * trans-expr (gfc_conv_missing_dummy): New function
1705         (gfc_conv_function_call): Call it and tidy up some of the code.
1706         * trans-intrinsic (gfc_conv_intrinsic_function_args): The same.
1708         PR fortran/26976
1709         * array.c (gfc_array_dimen_size): If available, return shape[dimen].
1710         * resolve.c (resolve_function): If available, use the argument
1711         shape for the function expression.
1712         * iresolve.c (gfc_resolve_transfer): Set shape[0] = size.
1714 2006-04-02  Erik Edelmann  <eedelman@gcc.gnu.org>
1716         * trans-array.c (gfc_trans_dealloc_allocated): Take a
1717         tree representation of the array to be deallocated as argument
1718         instead of its gfc_symbol.
1719         (gfc_trans_deferred_array): Update call to
1720         gfc_trans_dealloc_allocated.
1721         * trans-array.h (gfc_trans_dealloc_allocated): Update
1722         prototype.
1723         * trans-expr.c (gfc_conv_function_call): Update call to
1724         gfc_trans_dealloc_allocated, get indirect reference to dummy
1725         arguments.
1727 2006-04-01  Roger Sayle  <roger@eyesopen.com>
1729         PR fortran/25270
1730         * trans-array.c (gfc_trans_allocate_array_storage): In array index
1731         calculations use gfc_index_zero_node and gfc_index_one_node instead
1732         of integer_zero_node and integer_one_node respectively.
1733         (gfc_conv_array_transpose): Likewise.
1734         (gfc_conv_ss_startstride): Likewise.
1735         (gfc_trans_dummy_array_bias): Likewise.
1737 2006-04-01  Roger Sayle  <roger@eyesopen.com>
1739         * dependency.c (gfc_is_inside_range): Delete.
1740         (gfc_check_element_vs_section): Significant rewrite.
1742 2006-04-01  Roger Sayle  <roger@eyesopen.com>
1744         * dependency.c (gfc_dep_compare_expr): Strip parentheses and unary
1745         plus operators when comparing expressions.  Handle comparisons of
1746         the form "X+C vs. X", "X vs. X+C", "X-C vs. X" and "X vs. X-C" where
1747         C is an integer constant.  Handle comparisons of the form "P+Q vs.
1748         R+S" and "P-Q vs. R-S".  Handle comparisons of integral extensions
1749         specially (increasing functions) so extend(A) > extend(B), when A>B.
1750         (gfc_check_element_vs_element): Move test later, so that we ignore
1751         the fact that "A < B" or "A > B" when A or B contains a forall index.
1753 2006-03-31  Asher Langton  <langton2@llnl.gov>
1755         PR fortran/25358
1756         * expr.c (gfc_check_assign): Allow cray pointee to be assumes-size.
1757         
1758 2006-03-30  Paul Thomas <paulthomas2@wanadoo.fr>
1759             Bud Davis  <bdavis9659@sbcglobal.net>
1761         PR 21130
1762         * module.c (load_needed): Traverse entire tree before returning.
1764 2006-03-30  Roger Sayle  <roger@eyesopen.com>
1766         PR middle-end/22375
1767         * trans.c (gfc_trans_runtime_check): Promote the arguments of
1768         __builtin_expect to the correct types, and the result back to
1769         boolean_type_node.
1771 2006-03-29  Carlos O'Donell  <carlos@codesourcery.com>
1773         * Make-lang.in: Rename docdir to gcc_docdir.
1775 2006-03-28  Steven G. Kargl  <kargls@comcast.net>
1777         * intrinsic.texi: s/floor/float in previous commit.
1779 2006-03-28 Paul Thomas <pault@gcc.gnu.org>
1781         PR fortran/26779
1782         * resolve.c (resolve_fl_procedure): Do not check the access of
1783         derived types for internal procedures.
1785 2006-03-27  Jakub Jelinek  <jakub@redhat.com>
1787         * io.c (check_io_constraints): Don't look at
1788         dt->advance->value.charater.string, unless it is a CHARACTER
1789         constant.
1791         * f95-lang.c (gfc_get_alias_set): New function.
1792         (LANG_HOOKS_GET_ALIAS_SET): Define.
1794 2006-03-25  Steven G. Kargl  <kargls@comcast.net>
1796         PR fortran/26816
1797         * intrinsic.c (add_functions): Allow FLOAT to accept all integer kinds.
1798         * intrinsic.texi: Document FLOAT.
1800 2006-03-25  Thomas Koenig  <Thomas.Koenig@online.de>
1802         PR fortran/26769
1803         * iresolve.c (gfc_resolve_reshape):  Remove doubling of
1804         kind for complex. For real(kind=10), call reshape_r10.
1805         (gfc_resolve_transpose):  For real(kind=10), call
1806         transpose_r10.
1808 2006-03-25  Roger Sayle  <roger@eyesopen.com>
1810         * dependency.c (gfc_check_dependency): Improve handling of pointers;
1811         Two variables of different types can't have a dependency, and two
1812         variables with the same symbol are equal, even if pointers.
1814 2006-03-24  Roger Sayle  <roger@eyesopen.com>
1816         * gfortran.h (gfc_symbol): Add a new "forall_index" bit field.
1817         * match.c (match_forall_iterator): Set forall_index field on
1818         the iteration variable's symbol.
1819         * dependency.c (contains_forall_index_p): New function to
1820         traverse a gfc_expr to check whether it contains a variable
1821         with forall_index set in it's symbol.
1822         (gfc_check_element_vs_element): Return GFC_DEP_EQUAL for scalar
1823         constant expressions that don't variables used as FORALL indices.
1825 2006-03-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1827         PR driver/22600
1828         * error.c (gfc_fatal_error): Return ICE_EXIT_CODE instead of 4.
1830 2006-03-22  Thomas Koenig  <Thomas.Koenig@online.de>
1832         PR fortran/19303
1833         * gfortran.h (gfc_option_t):  Add record_marker.
1834         * lang.opt:  Add -frecord-marker=4 and -frecord-marker=8.
1835         * trans-decl.c:  Add gfor_fndecl_set_record_marker.
1836         (gfc_build_builtin_function_decls): Set
1837         gfor_fndecl_set_record_marker.
1838         (gfc_generate_function_code):  If we are in the main program
1839         and -frecord-marker was provided, call set_record_marker.
1840         * options.c (gfc_handle_option):  Add handling for
1841         -frecord-marker=4 and -frecord-marker=8.
1842         * invoke.texi:  Document -frecord-marker.
1844 2006-03-22  Paul Thomas  <pault@gcc.gnu.org>
1846         PR fortran/17298
1847         * trans-intrinsic.c (gfc_conv_intrinsic_array_transfer): New
1848         function to implement array valued TRANSFER intrinsic.
1849         (gfc_conv_intrinsic_function): Call the new function if TRANSFER
1850         and non-null se->ss.
1851         (gfc_walk_intrinsic_function): Treat TRANSFER as one of the
1852         special cases by calling gfc_walk_intrinsic_libfunc directly.
1854 2006-03-21  Toon Moene  <toon@moene.indiv.nluug.nl>
1856         * options.c (gfc_init_options): Initialize
1857         flag_argument_noalias to 3.
1859 2006-03-20  Thomas Koenig  <Thomas.Koenig@online.de>
1861         PR fortran/20935
1862         * iresolve.c (gfc_resolve_maxloc):   If mask is scalar,
1863         prefix the function name with an "s".  If the mask is scalar
1864         or if its kind is smaller than gfc_default_logical_kind,
1865         coerce it to default kind.
1866         (gfc_resolve_maxval):  Likewise.
1867         (gfc_resolve_minloc):  Likewise.
1868         (gfc_resolve_minval):  Likewise.
1869         (gfc_resolve_product):  Likewise.
1870         (gfc_resolve_sum):  Likewise.
1872 2006-03-19  Paul Thomas  <pault@gcc.gnu.org>
1874         PR fortran/26741
1875         *expr.c (external_spec_function): Permit elemental functions.
1877         PR fortran/26716
1878         *interface.c (compare_actual_formal): Detect call for procedure
1879         usage and require rank checking, in this case, for assumed shape
1880         and deferred shape arrays.
1881         (gfc_procedure_use): Revert to pre-PR25070 call to
1882         compare_actual_formal that does not require rank checking..
1884 2006-03-16  Roger Sayle  <roger@eyesopen.com>
1886         * gfortran.h (gfc_equiv_info): Add length field.
1887         * trans-common.c (copy_equiv_list_to_ns): Set the length field.
1888         * dependency.c (gfc_are_equivalenced_arrays): Use both the offset
1889         and length fields to determine whether the two equivalenced symbols
1890         overlap in memory.
1892 2006-03-14  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1894         PR fortran/19101
1895         * gfortran.h: Add warn_ampersand.
1896         * invoke.texi: Add documentation for new option.
1897         * lang.opt: Add Wampersand.
1898         * options.c (gfc_init_options): Initialize warn_ampersand.
1899         (gfc_post_options): Set the warn if pedantic.
1900         (set_Wall): Set warn_ampersand.
1901         (gfc_handle_option: Add Wampersand for itself, -std=f95, and -std=f2003.
1902         * scanner.c (gfc_next_char_literal): Add test for missing '&' in
1903         continued character constant and give warning if missing.
1905 2006-03-14  Steven G. Kargl  <kargls@comcast.net>
1907         PR 18537
1908         * gfortran.h: Wrap Copyright line.
1909         (gfc_option_t): add warn_tabs member.
1910         * lang.opt: Update Coyright year.  Add the Wtabs.
1911         * invoke.texi: Document -Wtabs.
1912         * scanner.c (gfc_gobble_whitespace): Use warn_tabs.  Add linenum to
1913         suppress multiple warnings.
1914         (load_line): Use warn_tabs.  Add linenum, current_line, seen_comment
1915         to suppress multiple warnings.
1916         * options.c (gfc_init_options): Initialize warn_tabs.
1917         (set_Wall): set warn_tabs for -Wall.
1918         (gfc_post_options): Adjust flag_tabs depending on -pedantic.
1919         (gfc_handle_option):  Process command-line option -W[no-]tabs
1921 2006-03-13  Paul Thomas  <pault@gcc.gnu.org>
1923         PR fortran/25378
1924         * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): Set the initial position to zero and
1925         modify the condition for updating it, to implement the F2003 requirement for all(mask)
1926         is false.
1928 2006-03-13  Jakub Jelinek  <jakub@redhat.com>
1930         * trans-openmp.c (gfc_trans_omp_variable): Handle references
1931         to parent result.
1932         * trans-expr.c (gfc_conv_variable): Remove useless setting
1933         of parent_flag, formatting.
1935         * trans-decl.c (gfc_get_fake_result_decl): Re-add setting of
1936         GFC_DECL_RESULT flag.
1938 2003-03-11  Roger Sayle  <roger@eyesopen.com>
1940         * dependency.c (gfc_dep_compare_expr) <EXPR_OP>: Allow unary and
1941         binary operators to compare equal if their operands are equal.
1942         <EXPR_FUNCTION>: Allow "constant" intrinsic conversion functions
1943         to compare equal, if their operands are equal.
1945 2006-03-11  Erik Edelmann  <eedelman@gcc.gnu.org>
1947         * symbol.c (check_conflict): Allow allocatable function results,
1948         except for elemental functions.
1949         * trans-array.c (gfc_trans_allocate_temp_array): Rename to ...
1950         (gfc_trans_create_temp_array): ... this, and add new argument
1951         callee_alloc.
1952         (gfc_trans_array_constructor, gfc_conv_loop_setup): Update call
1953         to gfc_trans_allocate_temp_array.
1954         * trans-array.h (gfc_trans_allocate_temp_array): Update prototype.
1955         * trans-expr.c (gfc_conv_function_call): Use new arg of
1956         gfc_trans_create_temp_array avoid pre-allocation of temporary
1957         result variables of pointer AND allocatable functions.
1958         (gfc_trans_arrayfunc_assign): Return NULL for allocatable
1959         functions.
1960         * resolve.c (resolve_symbol): Copy value of 'allocatable' attribute
1961         from sym->result to sym.
1963 2006-03-09  Erik Edelmann  <eedelman@gcc.gnu.org>
1965         * trans-expr.c (gfc_add_interface_mapping): Copy 'allocatable'
1966         attribute from sym to new_sym.  Call build_fold_indirect_ref()
1967         for allocatable arguments.
1969 2006-03-09 Paul Thomas <pault@gcc.gnu.org>
1971         PR fortran/26257
1972         * trans-array.c (gfc_conv_expr_descriptor): Exclude calculation of
1973         the offset and data when se->data_not_needed is set.
1974         * trans.h: Include the data_not_need bit in gfc_se.
1975         * trans-intrinsic.c (gfc_conv_intrinsic_size): Set it for SIZE.
1977 2006-03-06  Paul Thomas  <pault@gcc.gnu.org>
1978             Erik Edelmann  <eedelman@gcc.gnu.org>
1980         * trans-array.c (gfc_trans_dealloc_allocated): New function.
1981         (gfc_trans_deferred_array): Use it, instead of inline code.
1982         * trans-array.h: Prototype for gfc_trans_dealloc_allocated().
1983         * trans-expr.c (gfc_conv_function_call): Deallocate allocated
1984         ALLOCATABLE, INTENT(OUT) arguments upon procedure entry.
1986 2006-03-06  Paul Thomas  <pault@gcc.gnu.org>
1988         PR fortran/26107
1989         * resolve.c (resolve_function): Add name after test for pureness.
1991         PR fortran/19546
1992         * trans-expr.c (gfc_conv_variable): Detect reference to parent result,
1993         store current_function_decl, replace with parent, whilst calls are
1994         made to gfc_get_fake_result_decl, and restore afterwards. Signal this
1995         to gfc_get_fake_result_decl with a new argument, parent_flag.
1996         * trans-stmt.c (gfc_trans_return): gfc_get_fake_result_decl 2nd arg
1997         is set to zero.
1998         * trans.h: Add parent_flag to gfc_get_fake_result_decl prototype.
1999         * trans-decl.c (gfc_get_fake_result_decl): On parent_flag, being set,
2000         add decl to parent function. Replace refs to current_fake_result_decl
2001         with refs to this_result_decl.
2002         (gfc_generate_function_code): Null parent_fake_result_decl before the
2003         translation of code for contained procedures. Set parent_flag to zero
2004         in call to gfc_get_fake_result_decl.
2005         * trans-intrinsic.c (gfc_conv_intrinsic_len): The same.
2007 2006-03-05  Steven G. Kargl  <kargls@comcast.net>
2009         * simplify.c (gfc_simplify_verify):  Fix return when SET=''.
2011 2006-03-05  Erik Edelmann  <eedelman@gcc.gnu.org>
2013         PR fortran/16136
2014         * symbol.c (conf_std): New macro.
2015         (check_conflict): Use it to allow ALLOCATABLE dummy
2016         arguments for F2003.
2017         * trans-expr.c (gfc_conv_function_call): Pass the
2018         address of the array descriptor when dummy argument is
2019         ALLOCATABLE.
2020         * interface.c (compare_allocatable): New function.
2021         (compare_actual_formal): Use it.
2022         * resolve.c (resolve_deallocate_expr,
2023         resolve_allocate_expr): Check that INTENT(IN) variables
2024         aren't (de)allocated.
2025         * gfortran.texi (Fortran 2003 status): List ALLOCATABLE
2026         dummy arguments as supported.
2028 2006-03-03  Roger Sayle  <roger@eyesopen.com>
2030         * dependency.c (gfc_check_element_vs_element): Revert last change.
2032 2006-03-03  Roger Sayle  <roger@eyesopen.com>
2034         * dependency.c (gfc_check_element_vs_element): Consider two
2035         unordered scalar subscripts as (potentially) equal.
2037 2006-03-03  Roger Sayle  <roger@eyesopen.com>
2039         * dependency.c (gfc_check_dependency): Call gfc_dep_resolver to
2040         check whether two array references have a dependency.
2041         (gfc_check_element_vs_element): Assume lref and rref must be
2042         REF_ARRAYs.  If gfc_dep_compare_expr returns -2, assume these
2043         references could potentially overlap.
2044         (gfc_dep_resolver): Whitespace and comment tweaks.  Assume a
2045         dependency if the references have different depths.  Rewrite
2046         final term to clarrify we only have a dependency for overlaps.
2048 2006-03-03  Thomas Koenig  <Thomas.Koenig@online.de>
2050         PR fortran/25031
2051         * trans-array.h:  Adjust gfc_array_allocate prototype.
2052         * trans-array.c (gfc_array_allocate):  Change type of
2053         gfc_array_allocatate to bool.  Function returns true if
2054         it operates on an array.  Change second argument to gfc_expr.
2055         Find last reference in chain.
2056         If the function operates on an allocatable array, emit call to
2057         allocate_array() or allocate64_array().
2058         * trans-stmt.c (gfc_trans_allocate):  Code to follow to last
2059         reference has been moved to gfc_array_allocate.
2060         * trans.h:  Add declaration for gfor_fndecl_allocate_array and
2061         gfor_fndecl_allocate64_array.
2062         (gfc_build_builtin_function_decls):  Add gfor_fndecl_allocate_array
2063         and gfor_fndecl_allocate64_array.
2065 2006-03-01  Roger Sayle  <roger@eyesopen.com>
2067         * trans-stmt.c (generate_loop_for_temp_to_lhs): Add an additional
2068         INVERT argument to invert the sense of the WHEREMASK argument.
2069         Remove unneeded code to AND together a list of masks.
2070         (generate_loop_for_rhs_to_temp): Likewise.
2071         (gfc_trans_assign_need_temp): Likewise.
2072         (gfc_trans_forall_1): Likewise.
2073         (gfc_evaluate_where_mask): Likewise, add a new INVERT argument
2074         to specify the sense of the MASK argument.
2075         (gfc_trans_where_assign): Likewise.
2076         (gfc_trans_where_2): Likewise.  Restructure code that decides
2077         whether we need to allocate zero, one or two temporary masks.
2078         If this is a top-level WHERE (i.e. the incoming MASK is NULL),
2079         we only need to allocate at most one temporary mask, and can
2080         invert it's sense to provide the complementary pending execution
2081         mask.  Only calculate the size of the required temporary arrays
2082         if we need any.
2083         (gfc_trans_where): Update call to gfc_trans_where_2.
2085 2006-03-01  Paul Thomas  <pault@gcc.gnu.org>
2087         * iresolve.c (gfc_resolve_dot_product):  Remove any difference in
2088         treatment of logical types.
2089         * trans-intrinsic.c (gfc_conv_intrinsic_dot_product):  New function. 
2091         PR fortran/26393
2092         * trans-decl.c (gfc_get_symbol_decl): Extend condition that symbols
2093         must be referenced to include unreferenced symbols in an interface
2094         body. 
2096         PR fortran/20938
2097         * trans-array.c (gfc_conv_resolve_dependencies): Add call to
2098         gfc_are_equivalenced_arrays.
2099         * symbol.c (gfc_free_equiv_infos, gfc_free_equiv_lists): New
2100         functions. (gfc_free_namespace): Call them.
2101         * trans-common.c (copy_equiv_list_to_ns): New function.
2102         (add_equivalences): Call it.
2103         * gfortran.h: Add equiv_lists to gfc_namespace and define
2104         gfc_equiv_list and gfc_equiv_info.
2105         * dependency.c (gfc_are_equivalenced_arrays): New function.
2106         (gfc_check_dependency): Call it.
2107         * dependency.h: Prototype for gfc_are_equivalenced_arrays.
2109 2006-03-01  Roger Sayle  <roger@eyesopen.com>
2111         * dependency.c (gfc_is_same_range): Compare the stride, lower and
2112         upper bounds when testing array reference ranges for equality.
2113         (gfc_check_dependency): Fix indentation whitespace.
2114         (gfc_check_element_vs_element): Likewise.
2115         (gfc_dep_resolver): Likewise.
2117 2006-02-28  Thomas Koenig  <Thomas.Koenig@online.de>
2119         * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc):
2120         If the mask expression exists and has rank 0, enclose the
2121         generated loop in an "if (mask)".  Put the default
2122         initialization into the else branch.
2124 2006-02-25  Thomas Koenig  <Thomas.Koenig@online.de>
2126         PR fortran/23092
2127         * trans-intrinsic.c (gfc_conv_intrinsic_arith):  If the
2128         mask expression exists and has rank 0, enclose the generated
2129         loop in an "if (mask)".
2130         * (gfc_conv_intrinsic_minmaxloc):  Likewise.
2132 2006-02-24  Paul Thomas  <pault@gcc.gnu.org>
2134         PR fortran/26409
2135         * resolve.c (resolve_contained_functions, resolve_types,
2136         gfc_resolve): Revert patch of 2006-02-19.
2138 2006-02-24  Paul Thomas  <pault@gcc.gnu.org>
2140         PR fortran/24519
2141         * dependency.c (gfc_is_same_range): Correct typo.
2142         (gfc_check_section_vs_section): Call gfc_is_same_range.
2144         PR fortran/25395
2145         * trans-common.c (add_equivalences): Add a new flag that is set when
2146         an equivalence is seen that prevents more from being reset until the
2147         start of a new traversal of the list, thus ensuring completion of
2148         all the equivalences.
2150 2006-02-23  Erik Edelmann  <eedelman@gcc.gnu.org>
2152         * module.c (read_module): Remove redundant code lines.
2154 2006-02-20 Rafael �Ávila de Esp�índola <rafael.espindola@gmail.com>
2155         * Make-lang.in (FORTRAN): Remove
2156         (.PHONY): Remove F95 and f95. Add fortran
2158 2006-02-20  Roger Sayle  <roger@eyesopen.com>
2160         * trans-stmt.c (gfc_trans_where_2): Avoid updating unused current
2161         execution mask for empty WHERE/ELSEWHERE clauses.  Don't allocate
2162         temporary mask arrays if they won't be used.
2164 2006-02-20  Roger Sayle  <roger@eyesopen.com>
2166         * trans-stmt.c (gfc_trans_where_assign): Remove code to handle
2167         traversing a linked list of MASKs.  The MASK is now always a
2168         single element requiring no ANDing during the assignment.
2170 2006-02-19  Thomas Koenig  <Thomas.Koenig@online.de>
2172         * gfortran.texi:  Document environment variables which
2173         influence runtime behavior.
2175 2006-02-19  H.J. Lu  <hongjiu.lu@intel.com>
2177         * resolve.c (resolve_contained_functions): Call resolve_entries
2178         first.
2179         (resolve_types): Remove calls to resolve_entries and
2180         resolve_contained_functions.
2181         (gfc_resolve): Call resolve_contained_functions.
2183 2006-02-19  Erik Edelmann  <eedelman@gcc.gnu.org>
2185         PR fortran/26201
2186         * intrinsic.c (gfc_convert_type_warn): Call
2187         gfc_intrinsic_symbol() on the newly created symbol.
2189 2006-02-19  Paul Thomas  <pault@gcc.gnu.org>
2191         PR fortran/25054
2192         * resolve.c (is_non_constant_shape_array): New function.
2193         (resolve_fl_variable): Remove code for the new function and call it.
2194         (resolve_fl_namelist): New function.  Add test for namelist array
2195         with non-constant shape, using is_non_constant_shape_array.
2196         (resolve_symbol): Remove code for resolve_fl_namelist and call it.
2198         PR fortran/25089
2199         * match.c (match_namelist): Increment the refs field of an accepted
2200         namelist object symbol.
2201         * resolve.c (resolve_fl_namelist): Test namelist objects for a conflict
2202         with contained or module procedures.
2204 2006-02-18  Roger Sayle  <roger@eyesopen.com>
2206         * trans-stmt.c (struct temporary_list): Delete.
2207         (gfc_trans_where_2): Major reorganization.  Remove no longer needed
2208         TEMP argument.  Allocate and deallocate the control mask and
2209         pending control mask locally.
2210         (gfc_trans_forall_1): Delete TEMP local variable, and update
2211         call to gfc_trans_where_2.  No need to deallocate arrays after.
2212         (gfc_evaluate_where_mask): Major reorganization.  Change return
2213         type to void.  Pass in parent execution mask, MASK, and two
2214         already allocated mask arrays CMASK and PMASK.  On return
2215         CMASK := MASK & COND, PMASK := MASK & !COND.  MASK, CMASK and
2216         CMASK may all be NULL, or refer to the same temporary arrays.
2217         (gfc_trans_where): Update call to gfc_trans_where_2.  We no
2218         longer need a TEMP variable or to deallocate temporary arrays
2219         allocated by gfc_trans_where_2.
2221 2006-02-18   Danny Smith  <dannysmith@users.sourceforeg.net>
2223         * gfortran.h (gfc_add_attribute): Change uint to unsigned int.
2224         * symbol.c (gfc_add_attribute): Likewise for definition.
2225         * resolve.c (resolve_global_procedure): Likewise for variable 'type'.
2227 2006-02-17  Richard Sandiford  <richard@codesourcery.com>
2229         * trans-common.c: Include rtl.h earlier.
2230         * trans-decl.c: Likewise.
2232 2006-02-16  Jakub Jelinek  <jakub@redhat.com>
2234         PR fortran/26224
2235         * parse.c (parse_omp_do, parse_omp_structured_block): Call
2236         gfc_commit_symbols and gfc_warning_check.
2238         * openmp.c (resolve_omp_clauses): Add a dummy case label to workaround
2239         PR middle-end/26316.
2241 2006-02-16  Paul Thomas  <pault@gcc.gnu.org>
2243         PR fortran/24557
2244         * trans-expr.c (gfc_add_interface_mapping): Use the actual argument
2245         for character(*) arrays, rather than casting to the type and kind
2246         parameters of the formal argument.
2248 2006-02-15  Toon Moene  <toon@moene.indiv.nluug.nl>
2250         PR fortran/26054
2251         * options.c: Do not warn for Fortran 2003 features by default.
2253 2006-02-15  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
2255         * check.c: Update copyright years.
2256         
2257         * check.c (gfc_check_minloc_maxloc, check_reduction): Don't call
2258         dim_range_check on not-present optional dim argument.
2260 2006-02-15  Jakub Jelinek  <jakub@redhat.com>
2262         PR libgomp/25938
2263         PR libgomp/25984
2264         * Make-lang.in (install-finclude-dir): New goal.
2265         (fortran.install-common): Depend on install-finclude-dir.
2266         * lang-specs.h: If not -nostdinc, add -I finclude.
2268 2006-02-14  Thomas Koenig  <Thomas.Koenig@online.de>
2270         PR fortran/25045
2271         * check.c (dim_check):  Perform all checks if dim is optional.
2272         (gfc_check_minloc_maxloc):  Use dim_check and dim_rank_check
2273         to check dim argument.
2274         (check_reduction):  Likewise.
2276 2006-02-14  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
2278         PR fortran/26277
2279         * io.c (match_ltag): Mark label as referenced.
2281 2006-02-14  Jakub Jelinek  <jakub@redhat.com>
2282             Richard Henderson  <rth@redhat.com>
2283             Diego Novillo  <dnovillo@redhat.com>
2285         * invoke.texi: Document -fopenmp.
2286         * gfortran.texi (Extensions): Document OpenMP.
2288         Backport from gomp-20050608-branch
2289         * trans-openmp.c: Call build_omp_clause instead of
2290         make_node when creating OMP_CLAUSE_* trees.
2291         (gfc_trans_omp_reduction_list): Remove argument 'code'.
2292         Adjust all callers.
2294         * trans.h (build4_v): Define.
2295         * trans-openmp.c: Call build4_v to create OMP_PARALLEL nodes.
2296         Call build3_v to create OMP_SECTIONS nodes.
2298         PR fortran/25162
2299         * openmp.c (gfc_match_omp_variable_list): Call gfc_set_sym_referenced
2300         on all symbols added to the variable list.
2302         * openmp.c (gfc_match_omp_clauses): Fix check for non-INTRINSIC
2303         procedure symbol in REDUCTION.
2305         * trans-openmp.c (gfc_trans_omp_array_reduction): Use gfc_add
2306         for MINUS_EXPR OMP_CLAUSE_REDUCTION_CODE.
2308         * trans-openmp.c (gfc_trans_omp_do): Add PBLOCK argument.  If PBLOCK
2309         is non-NULL, evaluate INIT/COND/INCR and chunk size expressions in
2310         that statement block.
2311         (gfc_trans_omp_parallel_do): Pass non-NULL PBLOCK to gfc_trans_omp_do
2312         for non-ordered non-static combined loops.
2313         (gfc_trans_omp_directive): Pass NULL PBLOCK to gfc_trans_omp_do.
2315         * openmp.c: Include target.h and toplev.h.
2316         (gfc_match_omp_threadprivate): Emit diagnostic if target does
2317         not support TLS.
2318         * Make-lang.in (fortran/openmp.o): Add dependencies on
2319         target.h and toplev.h.
2321         * trans-decl.c (gfc_get_fake_result_decl): Set GFC_DECL_RESULT.
2322         * trans-openmp.c (gfc_omp_privatize_by_reference): Make
2323         DECL_ARTIFICIAL vars predetermined shared except GFC_DECL_RESULT.
2324         (gfc_omp_disregard_value_expr): Handle GFC_DECL_RESULT.
2325         (gfc_trans_omp_variable): New function.
2326         (gfc_trans_omp_variable_list, gfc_trans_omp_reduction_list): Use it.
2327         * trans.h (GFC_DECL_RESULT): Define.
2329         * trans-openmp.c (gfc_omp_firstprivatize_type_sizes): New function.
2330         * f95-lang.c (LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES): Define.
2331         * trans.h (gfc_omp_firstprivatize_type_sizes): New prototype.
2333         * trans-openmp.c (gfc_omp_privatize_by_reference): Return
2334         true if a pointer has GFC_DECL_SAVED_DESCRIPTOR set.
2335         (gfc_trans_omp_array_reduction, gfc_trans_omp_reduction_list): New
2336         functions.
2337         (gfc_trans_omp_clauses): Add WHERE argument.  Call
2338         gfc_trans_omp_reduction_list rather than gfc_trans_omp_variable_list
2339         for reductions.
2340         (gfc_trans_omp_do, gfc_trans_omp_parallel, gfc_trans_omp_parallel_do,
2341         gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare,
2342         gfc_trans_omp_sections, gfc_trans_omp_single): Adjust
2343         gfc_trans_omp_clauses callers.
2345         * openmp.c (omp_current_do_code): New var.
2346         (gfc_resolve_omp_do_blocks): New function.
2347         (gfc_resolve_omp_parallel_blocks): Call it.
2348         (gfc_resolve_do_iterator): Add CODE argument.  Don't propagate
2349         predetermination if argument is !$omp do or !$omp parallel do
2350         iteration variable.
2351         * resolve.c (resolve_code): Call gfc_resolve_omp_do_blocks
2352         for EXEC_OMP_DO.  Adjust gfc_resolve_do_iterator caller.
2353         * fortran.h (gfc_resolve_omp_do_blocks): New prototype.
2354         (gfc_resolve_do_iterator): Add CODE argument.
2356         * trans.h (gfc_omp_predetermined_sharing,
2357         gfc_omp_disregard_value_expr, gfc_omp_private_debug_clause): New
2358         prototypes.
2359         (GFC_DECL_COMMON_OR_EQUIV, GFC_DECL_CRAY_POINTEE): Define.
2360         * trans-openmp.c (gfc_omp_predetermined_sharing,
2361         gfc_omp_disregard_value_expr, gfc_omp_private_debug_clause): New
2362         functions.
2363         * trans-common.c (build_equiv_decl, build_common_decl,
2364         create_common): Set GFC_DECL_COMMON_OR_EQUIV flag on the decls.
2365         * trans-decl.c (gfc_finish_cray_pointee): Set GFC_DECL_CRAY_POINTEE
2366         on the decl.
2367         * f95-lang.c (LANG_HOOKS_OMP_PREDETERMINED_SHARING,
2368         LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR,
2369         LANG_HOOKS_OMP_PRIVATE_DEBUG_CLAUSE): Define.
2371         * openmp.c (resolve_omp_clauses): Remove extraneous comma.
2373         * symbol.c (check_conflict): Add conflict between cray_pointee and
2374         threadprivate.
2375         * openmp.c (gfc_match_omp_threadprivate): Fail if
2376         gfc_add_threadprivate returned FAILURE.
2377         (resolve_omp_clauses): Diagnose Cray pointees in SHARED,
2378         {,FIRST,LAST}PRIVATE and REDUCTION clauses and Cray pointers in
2379         {FIRST,LAST}PRIVATE and REDUCTION clauses.
2381         * resolve.c (omp_workshare_flag): New variable.
2382         (resolve_function): Diagnose use of non-ELEMENTAL user defined
2383         function in WORKSHARE construct.
2384         (resolve_code): Cleanup forall_save use.  Make sure omp_workshare_flag
2385         is set to correct value in different contexts.
2387         * openmp.c (resolve_omp_clauses): Replace %s with '%s' when printing
2388         variable name.
2389         (resolve_omp_atomic): Likewise.
2391         PR fortran/24493
2392         * scanner.c (skip_free_comments): Set at_bol at the beginning of the
2393         loop, not before it.
2394         (skip_fixed_comments): Handle ! comments in the middle of line here
2395         as well.
2396         (gfc_skip_comments): Use skip_fixed_comments for FIXED_FORM even if
2397         not at BOL.
2398         (gfc_next_char_literal): Fix expected canonicalized *$omp string.
2400         * trans-openmp.c (gfc_trans_omp_do): Use make_node and explicit
2401         initialization to build OMP_FOR instead of build.
2403         * trans-decl.c (gfc_gimplify_function): Invoke
2404         diagnose_omp_structured_block_errors.
2406         * trans-openmp.c (gfc_trans_omp_master): Use OMP_MASTER.
2407         (gfc_trans_omp_ordered): Use OMP_ORDERED.
2409         * gfortran.h (gfc_resolve_do_iterator, gfc_resolve_blocks,
2410         gfc_resolve_omp_parallel_blocks): New prototypes.
2411         * resolve.c (resolve_blocks): Renamed to...
2412         (gfc_resolve_blocks): ... this.  Remove static.
2413         (gfc_resolve_forall): Adjust caller.
2414         (resolve_code): Only call gfc_resolve_blocks if code->block != 0
2415         and not for EXEC_OMP_PARALLEL* directives.  Call
2416         gfc_resolve_omp_parallel_blocks for EXEC_OMP_PARALLEL* directives.
2417         Call gfc_resolve_do_iterator if resolved successfully EXEC_DO
2418         iterator.
2419         * openmp.c: Include pointer-set.h.
2420         (omp_current_ctx): New variable.
2421         (gfc_resolve_omp_parallel_blocks, gfc_resolve_do_iterator): New
2422         functions.
2423         * Make-lang.in (fortran/openmp.o): Depend on pointer-set.h.
2425         * openmp.c (gfc_match_omp_clauses): For max/min/iand/ior/ieor,
2426         look up symbol if it exists, use its name instead and, if it is not
2427         INTRINSIC, issue diagnostics.
2429         * parse.c (parse_omp_do): Handle implied end do properly.
2430         (parse_executable): If parse_omp_do returned ST_IMPLIED_ENDDO,
2431         return it instead of continuing.
2433         * trans-openmp.c (gfc_trans_omp_critical): Update for changed
2434         operand numbering.
2435         (gfc_trans_omp_do, gfc_trans_omp_parallel, gfc_trans_omp_parallel_do,
2436         gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare,
2437         gfc_trans_omp_sections, gfc_trans_omp_single): Likewise.
2439         * trans.h (gfc_omp_privatize_by_reference): New prototype.
2440         * f95-lang.c (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Redefine
2441         to gfc_omp_privatize_by_reference.
2442         * trans-openmp.c (gfc_omp_privatize_by_reference): New function.
2444         * trans-stmt.h (gfc_trans_omp_directive): Add comment.
2446         * openmp.c (gfc_match_omp_variable_list): Add ALLOW_COMMON argument.
2447         Disallow COMMON matching if it is set.
2448         (gfc_match_omp_clauses, gfc_match_omp_flush): Adjust all callers.
2449         (resolve_omp_clauses): Show locus in error messages.  Check that
2450         variable types in reduction clauses are appropriate for reduction
2451         operators.
2453         * resolve.c (resolve_symbol): Don't error if a threadprivate module
2454         variable isn't SAVEd.
2456         * trans-openmp.c (gfc_trans_omp_do): Put count into BLOCK, not BODY.
2457         Fix typo in condition.  Fix DOVAR initialization.
2459         * openmp.c (gfc_match_omp_clauses): Match min/iand/ior/ieor
2460         rather than .min. etc.
2462         * trans-openmpc.c (omp_not_yet): Remove.
2463         (gfc_trans_omp_parallel_do): Keep listprivate clause on parallel.
2464         Force creation of BIND_EXPR around the workshare construct.
2465         (gfc_trans_omp_parallel_sections): Likewise.
2466         (gfc_trans_omp_parallel_workshare): Likewise.
2468         * types.def (BT_I16, BT_FN_I16_VPTR_I16,
2469         BT_FN_BOOL_VPTR_I16_I16, BT_FN_I16_VPTR_I16_I16): Add.
2471         * trans-openmp.c (gfc_trans_omp_clauses): Create OMP_CLAUSE_DEFAULT.
2472         (gfc_trans_omp_code): New function.
2473         (gfc_trans_omp_do): Use it, remove omp_not_yet uses.
2474         (gfc_trans_omp_parallel, gfc_trans_omp_single): Likewise.
2475         (gfc_trans_omp_sections): Likewise.  Only treat empty last section
2476         specially if lastprivate clause is present.
2477         * f95-lang.c (gfc_init_builtin_functions): Create BUILT_IN_TRAP
2478         builtin.
2480         * trans-openmp.c (gfc_trans_omp_variable_list): Update for
2481         OMP_CLAUSE_DECL name change.
2482         (gfc_trans_omp_do): Likewise.
2484         * trans-openmp.c (gfc_trans_omp_clauses): Create OMP_CLAUSE_REDUCTION
2485         clauses.
2486         (gfc_trans_omp_atomic): Build OMP_ATOMIC instead of expanding
2487         sync builtins directly.
2488         (gfc_trans_omp_single): Build OMP_SINGLE statement.
2490         * trans-openmp.c (gfc_trans_add_clause): New.
2491         (gfc_trans_omp_variable_list): Take a tree code and build the clause
2492         node here.  Link it to the head of a list.
2493         (gfc_trans_omp_clauses): Update to match.
2494         (gfc_trans_omp_do): Use gfc_trans_add_clause.
2496         * trans-openmp.c (gfc_trans_omp_clauses): Change second argument to
2497         gfc_omp_clauses *.  Use gfc_evaluate_now instead of creating
2498         temporaries by hand.
2499         (gfc_trans_omp_atomic, gfc_trans_omp_critical): Use buildN_v macros.
2500         (gfc_trans_omp_do): New function.
2501         (gfc_trans_omp_master): Dont' check for gfc_trans_code returning NULL.
2502         (gfc_trans_omp_parallel): Adjust gfc_trans_omp_clauses caller.
2503         Use buildN_v macros.
2504         (gfc_trans_omp_parallel_do, gfc_trans_omp_parallel_sections,
2505         gfc_trans_omp_parallel_workshare, gfc_trans_omp_sections,
2506         gfc_trans_omp_single, gfc_trans_omp_workshare): New functions.
2507         (gfc_trans_omp_directive): Use them.
2508         * parse.c (parse_omp_do): Allow new_st.op == EXEC_NOP.
2509         * openmp.c (resolve_omp_clauses): Check for list items present
2510         in multiple clauses.
2511         (resolve_omp_do): Check that iteration variable is not THREADPRIVATE
2512         and is not present in any clause variable lists other than PRIVATE
2513         or LASTPRIVATE.
2515         * gfortran.h (symbol_attribute): Add threadprivate bit.
2516         (gfc_common_head): Add threadprivate member, change use_assoc
2517         and saved into char to save space.
2518         (gfc_add_threadprivate): New prototype.
2519         * symbol.c (check_conflict): Handle threadprivate.
2520         (gfc_add_threadprivate): New function.
2521         (gfc_copy_attr): Copy threadprivate.
2522         * trans-openmp.c (gfc_trans_omp_clauses): Avoid creating a temporary
2523         if IF or NUM_THREADS is constant.  Create OMP_CLAUSE_SCHEDULE and
2524         OMP_CLAUSE_ORDERED.
2525         * resolve.c (resolve_symbol): Complain if a THREADPRIVATE symbol
2526         outside a module and not in COMMON has is not SAVEd.
2527         (resolve_equivalence): Ensure THREADPRIVATE objects don't get
2528         EQUIVALENCEd.
2529         * trans-common.c: Include target.h and rtl.h.
2530         (build_common_decl): Set DECL_TLS_MODEL if THREADPRIVATE.
2531         * trans-decl.c: Include rtl.h.
2532         (gfc_finish_var_decl): Set DECL_TLS_MODEL if THREADPRIVATE.
2533         * dump-parse-tree.c (gfc_show_attr): Handle THREADPRIVATE.
2534         * Make-lang.in (fortran/trans-decl.o): Depend on $(RTL_H).
2535         (fortran/trans-common.o): Depend on $(RTL_H) and $(TARGET_H).
2536         * openmp.c (gfc_match_omp_variable_list): Ensure COMMON block
2537         is from current namespace.
2538         (gfc_match_omp_threadprivate): Rewrite.
2539         (resolve_omp_clauses): Check some clause restrictions.
2540         * module.c (ab_attribute): Add AB_THREADPRIVATE.
2541         (attr_bits): Add THREADPRIVATE.
2542         (mio_symbol_attribute, mio_symbol_attribute): Handle threadprivate.
2543         (load_commons, write_common, write_blank_common): Adjust for type
2544         change of saved, store/load threadprivate bit from the integer
2545         as well.
2547         * types.def (BT_FN_UINT_UINT): New.
2548         (BT_FN_VOID_UINT_UINT): Remove.
2550         * trans-openmp.c (gfc_trans_omp_clauses, gfc_trans_omp_barrier,
2551         gfc_trans_omp_critical, gfc_trans_omp_flush, gfc_trans_omp_master,
2552         gfc_trans_omp_ordered, gfc_trans_omp_parallel): New functions.
2553         (gfc_trans_omp_directive): Use them.
2555         * openmp.c (expr_references_sym): Add SE argument, don't look
2556         into SE tree.
2557         (is_conversion): New function.
2558         (resolve_omp_atomic): Adjust expr_references_sym callers.  Handle
2559         promoted expressions.
2560         * trans-openmp.c (gfc_trans_omp_atomic): New function.
2561         (gfc_trans_omp_directive): Call it.
2563         * f95-lang.c (builtin_type_for_size): New function.
2564         (gfc_init_builtin_functions): Initialize synchronization and
2565         OpenMP builtins.
2566         * types.def: New file.
2567         * Make-lang.in (f95-lang.o): Depend on $(BUILTINS_DEF) and
2568         fortran/types.def.
2570         * trans-openmp.c: Rename GOMP_* tree codes into OMP_*.
2572         * dump-parse-tree.c (show_symtree): Don't crash if ns->proc_name
2573         is NULL.
2575         * dump-parse-tree.c (gfc_show_namelist, gfc_show_omp_node): New
2576         functions.
2577         (gfc_show_code_node): Call gfc_show_omp_node for EXEC_OMP_* nodes.
2579         * parse.c (parse_omp_do): Call pop_state before next_statement.
2580         * openmp.c (expr_references_sym, resolve_omp_atomic, resolve_omp_do):
2581         New functions.
2582         (gfc_resolve_omp_directive): Call them.
2583         * match.c (match_exit_cycle): Issue error if EXIT or CYCLE statement
2584         leaves an OpenMP structured block or if EXIT terminates !$omp do
2585         loop.
2587         * Make-lang.in (F95_PARSER_OBJS): Add fortran/openmp.o.
2588         (F95_OBJS): Add fortran/trans-openmp.o.
2589         (fortran/trans-openmp.o): Depend on $(GFORTRAN_TRANS_DEPS).
2590         * lang.opt: Add -fopenmp option.
2591         * options.c (gfc_init_options): Initialize it.
2592         (gfc_handle_option): Handle it.
2593         * gfortran.h (ST_OMP_ATOMIC, ST_OMP_BARRIER, ST_OMP_CRITICAL,
2594         ST_OMP_END_CRITICAL, ST_OMP_END_DO, ST_OMP_END_MASTER,
2595         ST_OMP_END_ORDERED, ST_OMP_END_PARALLEL, ST_OMP_END_PARALLEL_DO,
2596         ST_OMP_END_PARALLEL_SECTIONS, ST_OMP_END_PARALLEL_WORKSHARE,
2597         ST_OMP_END_SECTIONS, ST_OMP_END_SINGLE, ST_OMP_END_WORKSHARE,
2598         ST_OMP_DO, ST_OMP_FLUSH, ST_OMP_MASTER, ST_OMP_ORDERED,
2599         ST_OMP_PARALLEL, ST_OMP_PARALLEL_DO, ST_OMP_PARALLEL_SECTIONS,
2600         ST_OMP_PARALLEL_WORKSHARE, ST_OMP_SECTIONS, ST_OMP_SECTION,
2601         ST_OMP_SINGLE, ST_OMP_THREADPRIVATE, ST_OMP_WORKSHARE): New
2602         statement codes.
2603         (OMP_LIST_PRIVATE, OMP_LIST_FIRSTPRIVATE, OMP_LIST_LASTPRIVATE,
2604         OMP_LIST_COPYPRIVATE, OMP_LIST_SHARED, OMP_LIST_COPYIN,
2605         OMP_LIST_PLUS, OMP_LIST_REDUCTION_FIRST, OMP_LIST_MULT,
2606         OMP_LIST_SUB, OMP_LIST_AND, OMP_LIST_OR, OMP_LIST_EQV,
2607         OMP_LIST_NEQV, OMP_LIST_MAX, OMP_LIST_MIN, OMP_LIST_IAND,
2608         OMP_LIST_IOR, OMP_LIST_IEOR, OMP_LIST_REDUCTION_LAST, OMP_LIST_NUM):
2609         New OpenMP variable list types.
2610         (gfc_omp_clauses): New typedef.
2611         (gfc_get_omp_clauses): Define.
2612         (EXEC_OMP_CRITICAL, EXEC_OMP_DO, EXEC_OMP_FLUSH, EXEC_OMP_MASTER,
2613         EXEC_OMP_ORDERED, EXEC_OMP_PARALLEL, EXEC_OMP_PARALLEL_DO,
2614         EXEC_OMP_PARALLEL_SECTIONS, EXEC_OMP_PARALLEL_WORKSHARE,
2615         EXEC_OMP_SECTIONS, EXEC_OMP_SINGLE, EXEC_OMP_WORKSHARE,
2616         EXEC_OMP_ATOMIC, EXEC_OMP_BARRIER, EXEC_OMP_END_NOWAIT,
2617         EXEC_OMP_END_SINGLE): New OpenMP gfc_exec_op codes.
2618         (struct gfc_code): Add omp_clauses, omp_name, omp_namelist
2619         and omp_bool fields to ext union.
2620         (flag_openmp): Declare.
2621         (gfc_free_omp_clauses, gfc_resolve_omp_directive): New prototypes.
2622         * scanner.c (openmp_flag, openmp_locus): New variables.
2623         (skip_free_comments, skip_fixed_comments, gfc_next_char_literal):
2624         Handle OpenMP directive lines and conditional compilation magic
2625         comments.
2626         * parse.h (COMP_OMP_STRUCTURED_BLOCK): New compile state.
2627         * parse.c (decode_omp_directive, parse_omp_do, parse_omp_atomic,
2628         parse_omp_structured_block): New functions.
2629         (next_free, next_fixed): Parse OpenMP directives.
2630         (case_executable, case_exec_markers, case_decl): Add ST_OMP_*
2631         codes.
2632         (gfc_ascii_statement): Handle ST_OMP_* codes.
2633         (parse_executable): Rearrange the loop slightly, so that
2634         parse_omp_do can return next_statement.
2635         * match.h (gfc_match_omp_eos, gfc_match_omp_atomic,
2636         gfc_match_omp_barrier, gfc_match_omp_critical, gfc_match_omp_do,
2637         gfc_match_omp_flush, gfc_match_omp_master, gfc_match_omp_ordered,
2638         gfc_match_omp_parallel, gfc_match_omp_parallel_do,
2639         gfc_match_omp_parallel_sections, gfc_match_omp_parallel_workshare,
2640         gfc_match_omp_sections, gfc_match_omp_single,
2641         gfc_match_omp_threadprivate, gfc_match_omp_workshare,
2642         gfc_match_omp_end_nowait, gfc_match_omp_end_single): New prototypes.
2643         * resolve.c (resolve_blocks): Ignore EXEC_OMP_* block directives.
2644         (resolve_code): Call gfc_resolve_omp_directive on EXEC_OMP_*
2645         directives.
2646         * trans.c (gfc_trans_code): Call gfc_trans_omp_directive for
2647         EXEC_OMP_* directives.
2648         * st.c (gfc_free_statement): Handle EXEC_OMP_* statement freeing.
2649         * trans-stmt.h (gfc_trans_omp_directive): New prototype.
2650         * openmp.c: New file.
2651         * trans-openmp.c: New file.
2653 2006-02-13  Andrew Pinski  <pinskia@physics.uc.edu>
2654             Jakub Jelinek  <jakub@redhat.com>
2656         PR fortran/26246
2657         * trans-decl.c (gfc_get_symbol_decl, gfc_get_fake_result_decl): Use
2658         gfc_add_decl_to_function rather than gfc_finish_var_decl on length.
2660 2006-02-13  Paul Thomas  <pault@gcc.gnu.org>
2662         PR fortran/26074
2663         PR fortran/25103
2664         * resolve.c (resolve_symbol): Extend the requirement that module
2665         arrays have constant bounds to those in the main program.  At the
2666         same time simplify the array bounds, to avoiding trapping parameter
2667         array references, and exclude automatic character length from main
2668         and modules. Rearrange resolve_symbol and resolve_derived to put as
2669         each flavor together, as much as is possible and move all specific
2670         code for flavors FL_VARIABLE, FL_PROCEDURE and FL_PARAMETER into new
2671         functions.
2672         (resolve_fl_var_and_proc, resolve_fl_variable, resolve_fl_procedure):
2673         New functions to do work of resolve_symbol.
2674         (resolve_index_expr): New function that is called from resolved_symbol
2675         and is extracted from resolve_charlen.
2676         (resolve_charlen): Call this new function.
2677         (resolve_fl_derived): Renamed resolve_derived to be consistent with
2678         the naming of the new functions for the other flavours.  Change the
2679         charlen checking so that the style is consistent with other similar
2680         checks. Add the generation of the gfc_dt_list, removed from resolve_
2681         symbol.
2683         PR fortran/20861
2684         * resolve.c (resolve_actual_arglist): Prevent internal procedures
2685         from being dummy arguments.
2687         PR fortran/20871
2688         * resolve.c (resolve_actual_arglist): Prevent pure but non-intrinsic
2689         procedures from being dummy arguments.
2691         PR fortran/25083
2692         * resolve.c (check_data_variable): Add test that data variable is in
2693         COMMON.
2695         PR fortran/25088
2696         * resolve.c (resolve_call): Add test that the subroutine does not
2697         have a type.
2699 2006-02-12  Erik Edelmann  <eedelman@gcc.gnu.org>
2701         PR fortran/25806
2702         * trans-array.c (gfc_trans_allocate_array_storage): New argument
2703         dealloc; free the temporary only if dealloc is true.
2704         (gfc_trans_allocate_temp_array): New argument bool dealloc, to be
2705         passed onwards to gfc_trans_allocate_array_storage.
2706         (gfc_trans_array_constructor, gfc_conv_loop_setup): Update call to
2707         gfc_trans_allocate_temp_array.
2708         * trans-array.h (gfc_trans_allocate_temp_array): Update function
2709         prototype.
2710         * trans-expr.c (gfc_conv_function_call): Set new argument 'dealloc'
2711         to gfc_trans_allocate_temp_array to false in case of functions
2712         returning pointers.
2713         (gfc_trans_arrayfunc_assign): Return NULL for functions returning
2714         pointers.
2716 2006-02-10  Steven G. Kargl  <kargls@comcast.net>
2718         PR fortran/20858
2719         *decl.c (variable_decl): Improve error message.  Remove initialization
2720         typespec.  Wrap long line.
2721         *expr.c (gfc_check_pointer_assign): Permit checking of type, kind type,
2722         and rank.
2723         *simplify.c (gfc_simplify_null): Ensure type, kind type, and rank
2724         are set.
2727 2006-02-10  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
2729         PR fortran/14771
2730         * arith.c (eval_intrinsic): Accept INTRINSIC_PARENTHESES.
2731         * expr.c (check_intrinsic_op): Likewise.
2732         * module.c (mio_expr): Likewise.
2734 2006-02-09  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
2736         * dump-parse-tree.c: Update copyright years.
2737         * matchexp.c: Likewise.
2738         * module.c: Likewise.
2740         PR fortran/14771
2741         * gfortran.h (gfc_intrinsic_op): Add INTRINSIC_PARENTHESES.
2742         * dump-parse-tree (gfc_show_expr): Handle INTRINSIC_PARENTHESES.
2743         * expr.c (simplify_intrinsic_op): Treat INTRINSIC_PARENTHESES as
2744         if it were INTRINSIC_UPLUS.
2745         * resolve.c (resolve_operator): Handle INTRINSIC_PARENTHESES.
2746         * match.c (intrinsic_operators): Add INTRINSIC_PARENTHESES.
2747         * matchexp.c (match_primary): Record parentheses surrounding
2748         numeric expressions.
2749         * module.c (intrinsics): Add INTRINSIC_PARENTHESES for module
2750         dumping.
2751         * trans-expr.c (gfc_conv_expr_op): Handle INTRINSIC_PARENTHESES.
2753 2006-02-09  Paul Thomas  <pault@gcc.gnu.org>
2755         PR fortran/26038
2756         * trans-stmt.c (gfc_trans_allocate): Provide assumed character length
2757         scalar with missing backend_decl for the hidden dummy charlen.
2759         PR fortran/25059
2760         * interface.c (gfc_extend_assign): Remove detection of non-PURE
2761         subroutine in assignment interface, with gfc_error, and put it in
2762         * resolve.c (resolve_code).
2764         PR fortran/25070
2765         * interface.c (gfc_procedure_use): Flag rank checking for non-
2766         elemental, contained or interface procedures in call to
2767         (compare_actual_formal), where ranks are checked for assumed
2768         shape arrays..
2770 2006-02-08  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
2772         PR libfortran/25425
2773         * trans-decl.c (gfc_generate_function_code): Add new argument,
2774         pedantic, to set_std call.
2776 2006-02-06  Thomas Koenig  <Thomas.Koenig@online.de>
2778         PR libfortran/23815
2779         * gfortran.texi: Document the GFORTRAN_CONVERT_UNIT environment
2780         variable.
2781         * invoke.texi:  Mention the "Runtime" chapter.
2782         Document the -fconvert= option.
2783         * gfortran.h:  Add options_convert.
2784         * lang.opt:  Add fconvert=little-endian, fconvert=big-endian,
2785         fconvert=native and fconvert=swap.
2786         * trans-decl.c (top level):  Add gfor_fndecl_set_convert.
2787         (gfc_build_builtin_function_decls):  Set gfor_fndecl_set_convert.
2788         (gfc_generate_function_code):  If -fconvert was specified,
2789         and this is the main program, add a call to set_convert().
2790         * options.c:  Handle the -fconvert options.
2792 2006-02-06  Roger Sayle  <roger@eyesopen.com>
2794         * trans-stmt.c (gfc_evaluate_where_mask): Allow the NMASK argument
2795         to be NULL to indicate that the not mask isn't required.
2796         (gfc_trans_where_2): Remove PMASK argument.  Avoid calculating the
2797         pending mask for the last clause of a WHERE chain.  Update recursive
2798         call.
2799         (gfc_trans_forall_1): Update call to gfc_trans_where_2.
2800         (gfc_trans_where): Likewise.
2802 2006-02-06  Jakub Jelinek  <jakub@redhat.com>
2804         Backport from gomp-20050608-branch
2805         * trans-decl.c (create_function_arglist): Handle dummy functions.
2807         * trans-decl.c (gfc_get_symbol_decl): Revert explicit setting of
2808         TYPE_SIZE_UNIT.
2809         (gfc_trans_vla_type_sizes): Also "gimplify"
2810         GFC_TYPE_ARRAY_DATAPTR_TYPE for GFC_DESCRIPTOR_TYPE_P types.
2811         * trans-array.c (gfc_trans_deferred_array): Call
2812         gfc_trans_vla_type_sizes.
2814         * trans-decl.c (saved_function_decls, saved_parent_function_decls):
2815         Remove unnecessary initialization.
2816         (create_function_arglist): Make sure __result has complete type.
2817         (gfc_get_fake_result_decl): Change current_fake_result_decl into
2818         a tree chain.  For entry master, create a separate variable
2819         for each result name.  For BT_CHARACTER results, call
2820         gfc_finish_var_decl on length even if it has been already created,
2821         but not pushdecl'ed.
2822         (gfc_trans_vla_type_sizes): For function/entry result, adjust
2823         result value type, not the FUNCTION_TYPE.
2824         (gfc_generate_function_code): Adjust for current_fake_result_decl
2825         changes.
2826         (gfc_trans_deferred_vars): Likewise.  Call gfc_trans_vla_type_sizes
2827         even on result if it is assumed-length character.
2829         * trans-decl.c (gfc_trans_dummy_character): Add SYM argument.
2830         Call gfc_trans_vla_type_sizes.
2831         (gfc_trans_auto_character_variable): Call gfc_trans_vla_type_sizes.
2832         (gfc_trans_vla_one_sizepos, gfc_trans_vla_type_sizes_1,
2833         gfc_trans_vla_type_sizes): New functions.
2834         (gfc_trans_deferred_vars): Adjust gfc_trans_dummy_character
2835         callers.  Call gfc_trans_vla_type_sizes on assumed-length
2836         character parameters.
2837         * trans-array.c (gfc_trans_array_bounds,
2838         gfc_trans_auto_array_allocation, gfc_trans_dummy_array_bias): Call
2839         gfc_trans_vla_type_sizes.
2840         * trans.h (gfc_trans_vla_type_sizes): New prototype.
2842         * trans-decl.c (gfc_build_qualified_array): For non-assumed-size
2843         arrays without constant size, create also an index var for
2844         GFC_TYPE_ARRAY_SIZE (type).  If the type is incomplete, complete
2845         it as 0..size-1.
2846         (gfc_create_string_length): Don't call gfc_defer_symbol_init
2847         if just creating DECL_ARGUMENTS.
2848         (gfc_get_symbol_decl): Call gfc_finish_var_decl and
2849         gfc_defer_symbol_init even if ts.cl->backend_decl is already
2850         set to a VAR_DECL that doesn't have DECL_CONTEXT yet.
2851         (create_function_arglist): Rework, so that hidden length
2852         arguments for CHARACTER parameters are created together with
2853         the parameters.  Resolve ts.cl->backend_decl for CHARACTER
2854         parameters.  If the argument is a non-constant length array
2855         or CHARACTER, ensure PARM_DECL has different type than
2856         its DECL_ARG_TYPE.
2857         (generate_local_decl): Call gfc_get_symbol_decl even
2858         for non-referenced non-constant length CHARACTER parameters
2859         after optionally issuing warnings.
2860         * trans-array.c (gfc_trans_array_bounds): Set last stride
2861         to GFC_TYPE_ARRAY_SIZE (type) to initialize it as well.
2862         (gfc_trans_dummy_array_bias): Initialize GFC_TYPE_ARRAY_SIZE (type)
2863         variable as well.
2865         * trans-expr.c (gfc_conv_expr_val): Fix comment typo.
2867         * trans-stmt.c (gfc_trans_simple_do): Fix comment.
2869 2006-02-04  Roger Sayle  <roger@eyesopen.com>
2871         * dependency.c (gfc_check_dependency): Remove unused vars and nvars
2872         arguments.  Replace with an "identical" argument.  A full array
2873         reference to the same symbol is a dependency if identical is true.
2874         * dependency.h (gfc_check_dependency): Update prototype.
2875         * trans-array.h (gfc_check_dependency): Delete duplicate prototype.
2876         * trans-stmt.c: #include dependency.h for gfc_check_dependency.
2877         (gfc_trans_forall_1): Update calls to gfc_check_dependency.
2878         (gfc_trans_where_2): Likewise.  Remove unneeded variables.
2879         (gfc_trans_where_3): New function for simple non-dependent WHEREs.
2880         (gfc_trans_where): Call gfc_trans_where_3 to translate simple
2881         F90-style WHERE statements without internal dependencies.
2882         * Make-lang.in (trans-stmt.o): Depend upon dependency.h.
2884 2006-02-05  H.J. Lu  <hongjiu.lu@intel.com>
2886         PR fortran/26041
2887         PR fortran/26064
2888         * resolve.c (resolve_types): New function.
2889         (resolve_codes): Likewise.
2890         (gfc_resolve): Use them.
2892 2006-02-05  Roger Sayle  <roger@eyesopen.com>
2894         * trans-stmt.c (gfc_evaluate_where_mask): Use LOGICAL*1 for WHERE
2895         masks instead of LOGICAL*4.
2897 2006-02-05  Jakub Jelinek  <jakub@redhat.com>
2899         * resolve.c (resolve_symbol): Initialize constructor_expr to NULL.
2901 2006-02-04  Thomas Koenig  <Thomas.Koenig@online.de>
2903         PR fortran/25075
2904         check.c (identical_dimen_shape):  New function.
2905         (check_dot_product):  Use identical_dimen_shape() to check sizes
2906         for dot_product.
2907         (gfc_check_matmul):  Likewise.
2908         (gfc_check_merge):  Check conformance between tsource and fsource
2909         and between tsource and mask.
2910         (gfc_check_pack):  Check conformance between array and mask.
2912 2006-02-03  Steven G. Kargl  <kargls@comcast>
2913             Paul Thomas  <pault@gcc.gnu.org>
2915         PR fortran/20845
2916         * resolve.c (resolve_symbol): Default initialization of derived type
2917         component reguires the SAVE attribute.
2919 2006-02-02  Steven G. Kargl  <kargls@comcast>
2921         PR fortran/24958
2922         match.c (gfc_match_nullify):  Free the list from head not tail.
2924         PR fortran/25072
2925         * match.c (match_forall_header): Fix internal error caused by bogus
2926         gfc_epxr pointers.
2929 2006-01-31  Thomas Koenig  <Thomas.Koenig@online.de>
2931         PR fortran/26039
2932         expr.c (gfc_check_conformance):  Reorder error message
2933         to avoid plural.
2934         check.c(gfc_check_minloc_maxloc):  Call gfc_check_conformance
2935         for checking arguments array and mask.
2936         (check_reduction):  Likewise.
2938 2006-01-30  Erik Edelmann  <eedelman@gcc.gnu.org>
2940         PR fortran/24266
2941         * trans-io.c (set_internal_unit): Check the rank of the
2942         expression node itself instead of its symbol.
2944 2006-01-29  Paul Thomas  <pault@gcc.gnu.org>
2946         PR fortran/18578
2947         PR fortran/18579
2948         PR fortran/20857
2949         PR fortran/20885
2950         * interface.c (compare_actual_formal): Error for INTENT(OUT or INOUT)
2951         if actual argument is not a variable.
2953 2006-01-28  Paul Thomas  <pault@gcc.gnu.org>
2955         PR fortran/17911
2956         * expr.c (gfc_check_assign, gfc_check_pointer_assign): Emit error if
2957         the lvalue is a use associated procedure.
2959         PR fortran/20895
2960         PR fortran/25030
2961         * expr.c (gfc_check_pointer_assign): Emit error if lvalue and rvalue
2962         character lengths are not the same.  Use gfc_dep_compare_expr for the
2963         comparison.
2964         * gfortran.h: Add prototype for gfc_dep_compare_expr.
2965         * dependency.h: Remove prototype for gfc_dep_compare_expr.
2967 2006-01-27  Paul Thomas  <pault@gcc.gnu.org>
2969         PR fortran/25964
2970         * resolve.c (resolve_function): Add GFC_ISYM_LOC to the list of
2971         generic_ids exempted from assumed size checking.
2973 2006-01-27  Jakub Jelinek  <jakub@redhat.com>
2975         PR fortran/25324
2976         * Make-lang.in (fortran/scanner.o): Depend on toplev.h.
2977         * lang.opt (fpreprocessed): New option.
2978         * scanner.c: Include toplev.h.
2979         (gfc_src_file, gfc_src_preprocessor_lines): New variables.
2980         (preprocessor_line): Unescape filename if there were any
2981         backslashes.
2982         (load_file): If initial and gfc_src_file is not NULL,
2983         use it rather than opening the file.  If gfc_src_preprocessor_lines
2984         has non-NULL elements, pass it to preprocessor_line.
2985         (unescape_filename, gfc_read_orig_filename): New functions.
2986         * gfortran.h (gfc_option_t): Add flag_preprocessed.
2987         (gfc_read_orig_filename): New prototype.
2988         * options.c (gfc_init_options): Clear flag_preprocessed.
2989         (gfc_post_options): If flag_preprocessed, call
2990         gfc_read_orig_filename.
2991         (gfc_handle_option): Handle OPT_fpreprocessed.
2992         * lang-specs.h: Pass -fpreprocessed to f951 if preprocessing
2993         sources.
2995 2006-01-27  Erik Edelmann  <eedelman@gcc.gnu.org>
2997         * symbol.c (free_old_symbol): Fix confusing comment, and add code
2998           to free old_symbol->formal.
3000 2006-01-26  Paul Thomas  <pault@gcc.gnu.org>
3002         PR fortran/25964
3003         * resolve.c (resolve_function): Exclude statement functions from
3004         global reference checking.
3006         PR fortran/25084
3007         PR fortran/20852
3008         PR fortran/25085
3009         PR fortran/25086
3010         * resolve.c (resolve_function): Declare a gfc_symbol to replace the
3011         references through the symtree to the symbol associated with the
3012         function expresion. Give error on reference to an assumed character
3013         length function is defined in an interface or an external function
3014         that is not a dummy argument.
3015         (resolve_symbol): Give error if an assumed character length function
3016         is array-valued, pointer-valued, pure or recursive. Emit warning
3017         that character(*) value functions are obsolescent in F95.
3019         PR fortran/25416
3020         * trans-expr.c (gfc_conv_function_call): The above patch to resolve.c
3021         prevents any assumed character length function call from getting here
3022         except intrinsics such as SPREAD. In this case, ensure that no
3023         segfault occurs from referencing non-existent charlen->length->
3024         expr_type and provide a backend_decl for the charlen from the charlen
3025         of the first actual argument.
3027         Cure temp name confusion.
3028         * trans-expr.c (gfc_get_interface_mapping_array): Change name of
3029         temporary from "parm" to "ifm" to avoid clash with temp coming from
3030         trans-array.c.
3032 2006-01-25  Erik Edelmann  <eedelman@gcc.gnu.org>
3034         PR fortran/25716
3035         * symbol.c (free_old_symbol): New function.
3036         (gfc_commit_symbols): Use it.
3037         (gfc_commit_symbol): New function.
3038         (gfc_use_derived): Use it.
3039         * gfortran.h: Add prototype for gfc_commit_symbol.
3040         * intrinsic.c (gfc_find_function): Search in 'conversion'
3041         if not found in 'functions'.
3042         (gfc_convert_type_warn): Add a symtree to the new
3043         expression node, and commit the new symtree->n.sym.
3044         * resolve.c (gfc_resolve_index): Make sure typespec is
3045         properly initialized.
3047 2006-01-23  Paul Thomas  <pault@gcc.gnu.org>
3049         PR fortran/25901
3050         * decl.c (get_proc_name): Replace subroutine and function attributes
3051         in "already defined" test by the formal arglist pointer being non-NULL.
3053         Fix regression in testing of admissability of attributes.
3054         * symbol.c (gfc_add_attribute): If the current_attr has non-zero
3055         intent, do not do the check for a dummy being used.
3056         * decl.c (attr_decl1): Add current_attr.intent as the third argument
3057         in the call to gfc_add_attribute.
3058         * gfortran.h: Add the third argument to the prototype for
3059         gfc_add_attribute.
3061 2006-01-21  Joseph S. Myers  <joseph@codesourcery.com>
3063         * gfortranspec.c (lang_specific_driver): Update copyright notice
3064         date.
3066 2006-01-21  Paul Thomas  <pault@gcc.gnu.org>
3068         PR fortran/25124
3069         PR fortran/25625
3070         * decl.c (get_proc_name): If there is an existing
3071         symbol in the encompassing namespace, call errors
3072         if it is a procedure of the same name or the kind
3073         field is set, indicating a type declaration.
3075         PR fortran/20881
3076         PR fortran/23308
3077         PR fortran/25538
3078         PR fortran/25710
3079         * decl.c (add_global_entry): New function to check
3080         for existing global symbol with this name and to
3081         create new one if none exists.
3082         (gfc_match_entry): Call add_global_entry before
3083         matching argument lists for subroutine and function
3084         entries.
3085         * gfortran.h: Prototype for existing function,
3086         global_used.
3087         * resolve.c (resolve_global_procedure): New function
3088         to check global symbols for procedures.
3089         (resolve_call, resolve_function): Calls to this
3090         new function for non-contained and non-module
3091         procedures.
3092         * match.c (match_common): Add check for existing
3093         global symbol, creat one if none exists and emit
3094         error if there is a clash.
3095         * parse.c (global_used): Remove static and use the
3096         gsymbol name rather than the new_block name, so that
3097         the function can be called from resolve.c.
3098         (parse_block_data, parse_module, add_global_procedure):
3099         Improve checks for existing gsymbols.  Emit error if
3100         already defined or if references were to another type.
3101         Set defined flag.
3103         PR fortran/PR24276
3104         * trans-expr.c (gfc_conv_aliased_arg): New function called by 
3105         gfc_conv_function_call that coverts an expression for an aliased
3106         component reference to a derived type array into a temporary array
3107         of the same type as the component.  The temporary is passed as an
3108         actual argument for the procedure call and is copied back to the
3109         derived type after the call.
3110         (is_aliased_array): New function that detects an array reference
3111         that is followed by a component reference.
3112         (gfc_conv_function_call): Detect an aliased actual argument with
3113         is_aliased_array and convert it to a temporary and back again
3114         using gfc_conv_aliased_arg.
3116 2006-01-19  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
3118         * gfortranspec.c: Update copyright years.
3119         * trans.c: Likewise.
3120         * trans-array.c: Likewise.
3121         * trans-array.h: Likewise.
3122         * trans-decl.c: Likewise.
3123         * trans-stmt.c: Likewise.
3124         * trans-stmt.h: Likewise.
3125         * trans-types.c: Likewise.
3127 2006-01-18  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
3129         PR fortran/18540
3130         PR fortran/18937
3131         * gfortran.h (BBT_HEADER): Move definition up.
3132         (gfc_st_label): Add BBT_HEADER, remove 'prev' and 'next'.
3133         * io.c (format_asterisk): Adapt initializer.
3134         * resolve.c (resolve_branch): Allow FORTRAN 66 cross-block GOTOs
3135         as extension.
3136         (warn_unused_label): Take gfc_st_label label as argument, adapt to
3137         new data structure.
3138         (gfc_resolve): Adapt call to warn_unused_label.
3139         * symbol.c (compare_st_labels): New function.
3140         (gfc_free_st_label, free_st_labels, gfc_get_st_label): Convert to
3141         using balanced binary tree.
3142         * decl.c (match_char_length, gfc_match_old_kind_spec): Do away
3143         with 'cnt'.
3144         (warn_unused_label): Adapt to binary tree.
3145         * match.c (gfc_match_small_literal_int): Only set cnt if non-NULL.
3146         * primary.c (match_kind_param): Do away with cnt.
3148 2006-01-18  Paul Thomas  <pault@gcc.gnu.org>
3150         PR fortran/20869
3151         PR fortran/20875
3152         PR fortran/25024
3153         * symbol.c (check_conflict): Add pointer valued elemental
3154         functions and internal procedures with the external attribute
3155         to the list of conflicts.
3156         (gfc_add_attribute): New catch-all function to perform the
3157         checking of symbol attributes for attribute declaration
3158         statements.
3159         * decl.c (attr_decl1): Call gfc_add_attribute for each of -
3160         (gfc_match_external, gfc_match_intent, gfc_match_intrinsic,
3161         gfc_match_pointer, gfc_match_dimension, gfc_match_target):
3162         Remove spurious calls to checks in symbol.c.  Set the
3163         attribute directly and use the call to attr_decl() for
3164         checking.
3165         * gfortran.h:  Add prototype for gfc_add_attribute.
3167         PR fortran/25785
3168         * resolve.c (resolve_function): Exclude PRESENT from assumed size
3169         argument checking. Replace strcmp's with comparisons with generic
3170         codes.
3172 2006-01-16  Rafael �Ávila de Esp�índola  <rafael.espindola@gmail.com>
3174         * gfortranspec.c (lang_specific_spec_functions): Remove.
3176 2006-01-16  Richard Guenther  <rguenther@suse.de>
3178         * trans-stmt.c (gfc_trans_if_1): Use fold_buildN and build_int_cst.
3179         (gfc_trans_arithmetic_if): Likewise.
3180         (gfc_trans_simple_do): Likewise.
3181         (gfc_trans_do): Likewise.
3182         (gfc_trans_do_while): Likewise.
3183         (gfc_trans_logical_select): Likewise.
3184         (gfc_trans_forall_loop): Likewise.
3185         (generate_loop_for_temp_to_lhs): Likewise.
3186         (generate_loop_for_rhs_to_temp): Likewise.
3187         (gfc_trans_allocate): Likewise.
3188         * trans.c (gfc_add_expr_to_block): Do not fold expr again.
3190 2006-01-16  Richard Guenther  <rguenther@suse.de>
3192         * trans-expr.c (gfc_conv_function_call): Use fold_build2.
3193         * trans-stmt.c (gfc_trans_goto): Likewise.  Use build_int_cst.
3194         * trans.c (gfc_trans_runtime_check): Don't fold the condition
3195         again.
3197 2006-01-13  Steven G. Kargl  <kargls@comcast.net>
3199         PR fortran/25756
3200         * symbol.c (gfc_free_st_label): Give variable meaningful name. Remove
3201         unneeded parenthesis. Fix-up the head of the list (2 lines gleaned
3202         from g95).
3204 2006-01-13  Diego Novillo  <dnovillo@redhat.com>
3206         * trans.c (gfc_add_expr_to_block): Do not fold tcc_statement
3207         nodes.
3209 2006-01-11  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
3211         * parse.c (next_fixed): Remove superfluous string concatenation.
3213 2006-01-11  Bernhard Fischer  <rep.nop@aon.at>
3215         PR fortran/25486
3216         * scanner.c (load_line): use maxlen to determine the line-length used
3217         for padding lines in fixed form.
3219 2006-01-11  Paul Thomas  <pault@gcc.gnu.org>
3221         PR fortran/25730
3222         * trans-types.c (copy_dt_decls_ifequal): Copy backend decl for
3223         character lengths.
3225 2006-01-09  Andrew Pinski  <pinskia@physics.uc.edu>
3227         fortran/24936
3228         * trans-stmt.c (gfc_trans_pointer_assign_need_temp): Use fold_convert
3229         to avoid type mismatch.
3231 2006-01-09  Andrew Pinski  <pinskia@physics.uc.edu>
3233         PR fortran/21977
3234         * trans-decl.c (gfc_generate_function_code): Move the NULLing of
3235         current_fake_result_decl down to below generate_local_vars.
3237 2006-01-09  Feng Wang  <fengwang@nudt.edu.cn>
3239         PR fortran/12456
3240         * trans-expr.c (gfc_to_single_character): New function that converts
3241         string to single character if its length is 1.
3242         (gfc_build_compare_string):New function that compare string and handle
3243         single character specially.
3244         (gfc_conv_expr_op): Use gfc_build_compare_string.
3245         (gfc_trans_string_copy): Use gfc_to_single_character.
3246         * trans-intrinsic.c (gfc_conv_intrinsic_strcmp): Use
3247         gfc_build_compare_string.
3248         * trans.h (gfc_build_compare_string): Add prototype.
3250 2006-01-09  Feng Wang  <fengwang@nudt.edu.cn>
3252         * simplify.c (gfc_simplify_char): Use UCHAR_MAX instead of literal
3253         constant.
3254         (gfc_simplify_ichar): Get the result from unsinged char and in the
3255         range 0 to UCHAR_MAX instead of CHAR_MIN to CHAR_MAX.
3257 2006-01-08  Erik Edelmann  <eedelman@gcc.gnu.org>
3259         PR fortran/25093
3260         * resolve.c (resolve_fntype): Check that PUBLIC functions
3261         aren't of PRIVATE type.
3263 2006-01-07  Tobias Schl"uter  <tobias.schlueter@physik.uni-muenchen.de>
3265         * decl.c (gfc_match_function_decl): Correctly error out in case of
3266         omitted function argument list.
3268 2006-01-07  Paul Thomas  <pault@gcc.gnu.org>
3270         PR fortran/22146
3271         * trans-array.c (gfc_reverse_ss): Remove static attribute.
3272         (gfc_walk_elemental_function_args): Replace gfc_expr * argument for
3273         the function call with the corresponding gfc_actual_arglist*.  Change
3274         code accordingly.
3275         (gfc_walk_function_expr): Call to gfc_walk_elemental_function_args
3276         now requires the actual argument list instead of the expression for
3277         the function call.
3278         * trans-array.h: Modify the prototype for gfc_walk_elemental_function_args
3279         and provide a prototype for gfc_reverse_ss.
3280         * trans-stmt.h (gfc_trans_call): Add the scalarization code for the case
3281         where an elemental subroutine has array valued actual arguments.
3283         PR fortran/25029
3284         PR fortran/21256
3285         PR fortran/20868
3286         PR fortran/20870
3287         * resolve.c (check_assumed_size_reference): New function to check for upper
3288         bound in assumed size array references.
3289         (resolve_assumed_size_actual): New function to do a very restricted scan
3290         of actual argument expressions of those procedures for which incomplete
3291         assumed size array references are not allowed.
3292         (resolve_function, resolve_call): Switch off assumed size checking of
3293         actual arguments, except for elemental procedures and intrinsic
3294         inquiry functions, in some circumstances.
3295         (resolve_variable): Call check_assumed_size_reference.
3297 2006-01-05  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
3299         PR fortran/24268
3300         * io.c (next_char_not_space): New function that returns the next
3301         character that is not white space.
3302         (format_lex): Use the new function to skip whitespace within
3303         a format string.
3305 2006-01-05  Erik Edelmann  <eedelman@gcc.gnu.org>
3307         PR fortran/23675
3308         * expr.c (gfc_expr_set_symbols_referenced): New function.
3309         * gfortran.h: Add a function prototype for it.
3310         * resolve.c (resolve_function): Use it for
3311         use associated character functions lengths.
3312         * expr.c, gfortran.h, resolve.c: Updated copyright years.
3314 2006-01-03  Steven G. Kargl  <kargls@comcast.net>
3316         PR fortran/25101
3317         * resolve.c (resolve_forall_iterators):  Check for scalar variables;
3318         Check stride is nonzero.
3320 2006-01-02  Steven G. Kargl  <kargls@comcast.net>
3322         PR fortran/24640
3323         * parse.c (next_free): Check for whitespace after the label.
3324         * match.c (gfc_match_small_literal_int): Initialize cnt variable.
3326 2006-01-01  Steven G. Kargl  <kargls@comcast.net>
3328         * ChangeLog: Split previous years into ...
3329         * ChangeLog-2002: here.
3330         * ChangeLog-2003: here.
3331         * ChangeLog-2004: here.
3332         * ChangeLog-2005: here.