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