OSDN Git Service

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