OSDN Git Service

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