OSDN Git Service

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