OSDN Git Service

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