OSDN Git Service

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