OSDN Git Service

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