OSDN Git Service

* check.c, expr.c, resolve.c, trans-common.c,
[pf3gnuchains/gcc-fork.git] / gcc / fortran / ChangeLog
1 2006-05-28  Kazu Hirata  <kazu@codesourcery.com>
2
3         * check.c, expr.c, resolve.c, trans-common.c,
4         trans-intrinsic.c, trans-stmt.c, trans-types.c: Fix comment typos.
5
6 2006-05-27  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
7
8         PR fortran/19777
9         * trans-array.c (gfc_conv_array_ref): Don't perform out-of-bounds
10         checking for assumed-size arrrays.
11
12 2006-05-27  Paul Thomas  <pault@gcc.gnu.org>
13
14         * trans-intrinsic.c (gfc_conv_associated): If pointer in first
15         arguments has zero array length of zero string length, return
16         false.
17
18 2006-05-26  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
19
20         PR fortran/27524
21         * trans-array.c (gfc_trans_dummy_array_bias): Don't use stride as
22         a temporary variable when -fbounds-check is enabled, since its
23         value will be needed later.
24
25 2006-05-26  Thomas Koenig  <Thomas.Koenig@online.de>
26
27         PR fortran/23151
28         * io.c (match_io):  print (1,*) is an error.
29
30 2006-05-26  Paul Thomas  <pault@gcc.gnu.org>
31
32         PR fortran/27709
33         * resolve.c (find_array_spec): Add gfc_symbol, derived, and
34         use to track repeated component references.
35
36         PR fortran/27155
37         PR fortran/27449
38         * trans-intrinsic.c (gfc_conv_intrinsic_array_transfer): Use
39         se->string_length throughout and use memcpy to populate the
40         expression returned to the scalarizer.
41         (gfc_size_in_bytes): New function.
42
43 2006-05-21  Paul Thomas  <pault@gcc.gnu.org>
44
45         PR fortran/27613
46         * primary.c (gfc_match_rvalue): Test if symbol represents a
47         direct recursive function reference.  Error if array valued,
48         go to function0 otherwise.
49
50 2006-05-21  Paul Thomas  <pault@gcc.gnu.org>
51
52         PR fortran/25746
53         * interface.c (gfc_extend_assign): Use new EXEC_ASSIGN_CALL.
54         * gfortran.h : Put EXEC_ASSIGN_CALL in enum.
55         * trans-stmt.c (gfc_conv_elemental_dependencies): New function.
56         (gfc_trans_call): Call it.  Add new boolian argument to flag
57         need for dependency checking. Assert intent OUT and IN for arg1
58         and arg2.
59         (gfc_trans_forall_1): Use new code EXEC_ASSIGN_CALL.
60         trans-stmt.h : Modify prototype of gfc_trans_call.
61         trans.c (gfc_trans_code): Add call for EXEC_ASSIGN_CALL.
62         st.c (gfc_free_statement): Free actual for EXEC_ASSIGN_CALL.
63         * dependency.c (gfc_check_fncall_dependency): Don't check other
64         against itself.
65
66         PR fortran/25090
67         * resolve.c : Remove resolving_index_expr.
68         (entry_parameter): Remove.
69         (gfc_resolve_expr, resolve_charlen, resolve_fl_variable): Lift
70         calls to entry_parameter and references to resolving_index_expr.
71
72         PR fortran/27584
73         * check.c (gfc_check_associated): Replace NULL assert with an
74         error message, since it is possible to generate bad code that
75         has us fall through to here..
76
77         PR fortran/19015
78         * iresolve.c (maxloc, minloc): If DIM is not present, pass the
79         rank of ARRAY as the shape of the result.  Otherwise, pass the
80         shape of ARRAY, less the dimension DIM.
81         (maxval, minval): The same, when DIM is present, otherwise no
82         change.
83
84 2006-05-19  H.J. Lu  <hongjiu.lu@intel.com>
85
86         PR fortran/27662
87         * trans-array.c (gfc_conv_expr_descriptor): Don't zero the
88         first stride to indicate a temporary.
89         * trans-expr.c (gfc_conv_function_call): Likewise.
90
91 2006-05-18  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
92             Feng Wang  <fengwang@nudt.edu.cn>
93
94         PR fortran/27552
95         * dump-parse-tree.c (gfc_show_expr): Deal with Hollerith constants.
96         * data.c (create_character_intializer): Set from_H flag if character is
97         initialized by Hollerith constant.
98
99 2006-05-17  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
100
101         PR fortran/26551
102         * resolve.c (resolve_call, resolve_function): Issue an error
103         if a function or subroutine call is recursive but the function or
104         subroutine wasn't declared as such.
105
106 2006-05-07  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
107
108         PR fortran/26551
109         * gfortran.dg/recursive_check_1.f: New test.
110
111
112 2006-05-17  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
113
114         PR fortran/27320
115         * dump-parse-tree.c (gfc_show_code_node): Try harder to find the
116         called procedure name.
117
118 2006-05-17  Jakub Jelinek  <jakub@redhat.com>
119
120         PR middle-end/27415
121         * trans-openmp.c (gfc_trans_omp_parallel_do,
122         gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare): Set
123         OMP_PARALLEL_COMBINED flag.
124
125 2006-05-16  H.J. Lu  <hongjiu.lu@intel.com>
126
127         PR driver/26885
128         * Make-lang.in (GFORTRAN_D_OBJS): Replace gcc.o with
129         $(GCC_OBJS).
130
131 2006-05-15  Paul Thomas  <pault@gcc.gnu.org>
132
133         PR fortran/25090
134         * resolve.c: Static resolving_index_expr initialized.
135         (entry_parameter): New function to emit errors for variables
136         that are not entry parameters.
137         (gfc_resolve_expr): Call entry_parameter, when resolving
138         variables, if the namespace has entries and resolving_index_expr
139         is set.
140         (resolve_charlen): Set resolving_index_expr before the call to
141         resolve_index_expr and reset it afterwards.
142         (resolve_fl_variable): The same before and after the call to
143         is_non_constant_shape_array, which ultimately makes a call to
144         gfc_resolve_expr.
145
146         PR fortran/25082
147         * resolve.c (resolve_code): Add error condition that the return
148         expression must be scalar.
149
150         PR fortran/27411
151         * matchexp.c (gfc_get_parentheses): New function.
152         (match_primary): Remove inline code and call above.
153         * gfortran.h: Provide prototype for gfc_get_parentheses.
154         * resolve.c (resolve_array_ref): Call the above, when start is a
155         derived type variable array reference.
156
157 2006-05-15  Jakub Jelinek  <jakub@redhat.com>
158
159         PR fortran/27446
160         * trans-openmp.c (gfc_trans_omp_array_reduction): Ensure
161         OMP_CLAUSE_REDUCTION_{INIT,MERGE} are set to BIND_EXPR.
162
163 2006-05-14  H.J. Lu  <hongjiu.lu@intel.com>
164
165         * Make-lang.in (fortran/options.o): Depend on $(TARGET_H).
166
167 2006-05-11  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
168
169         PR fortran/27553
170         * parse.c (next_free): Return instead of calling decode_statement
171         upon error.
172
173 2005-05-10  Thomas Koenig  <Thomas.Koenig@online.de>
174
175         PR fortran/27470
176         * trans-array.c(gfc_array_allocate):  If ref->next exists
177         that is if there is a statement like ALLOCATE(foo%bar(2)),
178         F95 rules require that bar should be a pointer.
179
180 2006-05-10  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
181
182         PR fortran/20460
183         * resolve.c (gfc_resolve_index): Make REAL array indices a
184         GFC_STD_LEGACY feature.
185
186 2006-05-10  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
187
188         PR fortran/24549
189         * parse.c (reject_statement): Clear gfc_new_block.
190
191 2006-05-09  Steven G. Kargl  <kargls@comcast.net>
192
193         * invoke.texi: Missed file in previous commit.  Update
194          description of -fall-intrinsics
195
196 2006-05-07  Steven Boscher  <steven@gcc.gnu.org>
197
198         PR fortran/27378
199         * parse.c (next_statement): Add check to avoid an ICE when
200         gfc_current_locus.lb is not set.
201
202 2006-05-07  Tobias Schl\81üter  <tobias.schlueter@physik.uni-muenchen.de>
203
204         PR fortran/27457
205         * match.c (match_case_eos): Error out on garbage following
206         CASE(...).
207
208 2006-05-07  Paul Thomas  <pault@gcc.gnu.org>
209
210         PR fortran/24813
211         * trans-array.c (get_array_ctor_strlen): Remove static attribute.
212         * trans.h: Add prototype for get_array_ctor_strlen.
213         * trans-intrinsic.c (gfc_conv_intrinsic_len): Switch on EXPR_ARRAY
214         and call get_array_ctor_strlen.
215
216 2006-05-05  Steven G. Kargl  <kargls@comcast.net>
217
218         * invoke.texi: Update description of -fall-intrinsics
219         * options.c (gfc_post_options): Disable -Wnonstd-intrinsics if
220         -fall-intrinsics is used.
221         (gfc_handle_option): Permit -Wno-nonstd-intrinsics.
222
223 2006-05-04  Tobias Schl\81üter  <tobias.schlueter@physik.uni-muenchen.de>
224
225         * simplify.c (ascii_table): Fix wrong entry.
226
227 2006-05-02  Steven G. Kargl  <kargls@comcast.net>
228
229         PR fortran/26896
230         * lang.opt: Fix -Wtab description
231
232         PR fortran/20248  
233         * lang.opt: New flag -fall-intrinsics.
234         * invoke.texi:  Document option.
235         * gfortran.h (options_t):  New member flag_all_intrinsics.
236         * options.c (gfc_init_options, gfc_handle_option): Set new option.
237         sort nearby misplaced options.
238         * intrinsic.c (add_sym, make_generic, make_alias):  Use it.
239  
240 2006-05-02 Paul Thomas <pault@gcc.gnu.org>
241
242         PR fortran/27269
243         * module.c: Add static flag in_load_equiv.
244         (mio_expr_ref): Return if no symtree and in_load_equiv.
245         (load_equiv): If any of the equivalence members have no symtree, free
246         the equivalence and the associated expressions.
247
248         PR fortran/27324
249         * trans-common.c (gfc_trans_common): Invert the order of calls to
250         finish equivalences and gfc_commit_symbols.
251
252 2006-04-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
253
254         PR fortran/25681
255         * simplify.c (simplify_len): Character variables with constant
256         length can be simplified.
257
258 2006-04-29  H.J. Lu  <hongjiu.lu@intel.com>
259
260         PR fortran/27351
261         * trans-array.c (gfc_conv_array_transpose): Move gcc_assert
262         before gfc_conv_expr_descriptor.
263
264 2006-04-23  Paul Thomas  <pault@gcc.gnu.org>
265
266         PR fortran/25099
267         * resolve.c (resolve_call): Check conformity of elemental
268         subroutine actual arguments.
269
270 2006-04-22  Jakub Jelinek  <jakub@redhat.com>
271
272         PR fortran/26769
273         * iresolve.c (gfc_resolve_reshape): Use reshape_r16 for real(16).
274         (gfc_resolve_transpose): Use transpose_r16 for real(16).
275
276 2006-04-21 Paul Thomas <pault@gcc.gnu.org>
277
278         PR fortran/27122
279         * resolve.c (resolve_function): Remove general restriction on auto
280         character length function interfaces.
281         (gfc_resolve_uops): Check restrictions on defined operator
282         procedures.
283         (resolve_types): Call the check for defined operators.
284
285         PR fortran/27113
286         * trans-array.c (gfc_trans_array_constructor_subarray): Remove
287         redundant gfc_todo_error.
288         (get_array_ctor_var_strlen): Remove typo in enum.
289
290 2006-04-18  Bernhard Fischer  <aldot@gcc.gnu.org>
291
292         * parse.c (next_free): Use consistent error string between
293         free-form and fixed-form for illegal statement label of zero.
294         (next_fixed): Use consistent warning string between free-form
295         and fixed-form for statement labels for empty statements.
296
297 2006-04-18  Steve Ellcey  <sje@cup.hp.com>
298
299         * trans-io.c (gfc_build_io_library_fndecls): Align pad.
300
301 2006-04-16  Thomas Koenig  <Thomas.Koenig@online.de>
302
303         PR fortran/26017
304         * trans-array.c(gfc_array_init_size):  Introduce or_expr
305         which is true if the size along any dimension
306         is negative.  Create a temporary variable with base
307         name size.  If or_expr is true, set the temporary to 0,
308         to the normal size otherwise.
309
310 2006-04-16  Paul Thomas  <pault@gcc.gnu.org>
311
312         PR fortran/26822
313         * intrinsic.c (add_functions): Mark LOGICAL as elemental.
314
315         PR fortran/26787
316         * expr.c (gfc_check_assign): Extend scope of error to include
317         assignments to a procedure in the main program or, from a
318         module or internal procedure that is not that represented by
319         the lhs symbol. Use VARIABLE rather than l-value in message.
320
321         PR fortran/27096
322         * trans-array.c (gfc_trans_deferred_array): If the backend_decl
323         is not a descriptor, dereference and then test and use the type.
324
325         PR fortran/25597
326         * trans-decl.c (gfc_trans_deferred_vars): Check if an array
327         result, is also automatic character length.  If so, process
328         the character length.
329
330         PR fortran/18003
331         PR fortran/25669
332         PR fortran/26834
333         * trans_intrinsic.c (gfc_walk_intrinsic_bound): Set
334         data.info.dimen for bound intrinsics.
335         * trans_array.c (gfc_conv_ss_startstride): Pick out LBOUND and
336         UBOUND intrinsics and supply their shape information to the ss
337         and the loop.
338
339         PR fortran/27124
340         * trans_expr.c (gfc_trans_function_call):  Add a new block, post,
341         in to which all the argument post blocks are put.  Add this block
342         to se->pre after a byref call or to se->post, otherwise.
343
344 2006-04-14  Roger Sayle  <roger@eyesopen.com>
345
346         * trans-io.c (set_string): Use fold_build2 and build_int_cst instead
347         of build2 and convert to construct "x < 0" rather than "x <= -1".
348
349 2006-04-13  Richard Henderson  <rth@redhat.com>
350
351         * trans-openmp.c (gfc_trans_omp_sections): Adjust for changed
352         number of operands to OMP_SECTIONS.
353
354 2006-04-08  Kazu Hirata  <kazu@codesourcery.com>
355
356         * gfortran.texi: Fix typos.  Follow spelling conventions.
357         * resolve.c, trans-expr.c, trans-stmt.c: Fix comment typos.
358         Follow spelling conventions.
359
360 2006-04-05  Roger Sayle  <roger@eyesopen.com>
361
362         * dependency.c (get_no_elements): Delete function.
363         (get_deps): Delete function.
364         (transform_sections): Delete function.
365         (gfc_check_section_vs_section): Significant rewrite.
366
367 2006-04-04  H.J. Lu  <hongjiu.lu@intel.com>
368
369         PR fortran/25619
370         * trans-array.c (gfc_conv_expr_descriptor): Only dereference
371         character pointer when copying temporary.
372
373         PR fortran/23634
374         * trans-array.c (gfc_conv_expr_descriptor): Properly copy
375         temporary character with non constant size.
376
377 2006-04-03  Paul Thomas  <pault@gcc.gnu.org>
378
379         PR fortran/26891
380         * trans.h: Prototype for gfc_conv_missing_dummy.
381         * trans-expr (gfc_conv_missing_dummy): New function
382         (gfc_conv_function_call): Call it and tidy up some of the code.
383         * trans-intrinsic (gfc_conv_intrinsic_function_args): The same.
384
385         PR fortran/26976
386         * array.c (gfc_array_dimen_size): If available, return shape[dimen].
387         * resolve.c (resolve_function): If available, use the argument
388         shape for the function expression.
389         * iresolve.c (gfc_resolve_transfer): Set shape[0] = size.
390
391 2006-04-02  Erik Edelmann  <eedelman@gcc.gnu.org>
392
393         * trans-array.c (gfc_trans_dealloc_allocated): Take a
394         tree representation of the array to be deallocated as argument
395         instead of its gfc_symbol.
396         (gfc_trans_deferred_array): Update call to
397         gfc_trans_dealloc_allocated.
398         * trans-array.h (gfc_trans_dealloc_allocated): Update
399         prototype.
400         * trans-expr.c (gfc_conv_function_call): Update call to
401         gfc_trans_dealloc_allocated, get indirect reference to dummy
402         arguments.
403
404 2006-04-01  Roger Sayle  <roger@eyesopen.com>
405
406         PR fortran/25270
407         * trans-array.c (gfc_trans_allocate_array_storage): In array index
408         calculations use gfc_index_zero_node and gfc_index_one_node instead
409         of integer_zero_node and integer_one_node respectively.
410         (gfc_conv_array_transpose): Likewise.
411         (gfc_conv_ss_startstride): Likewise.
412         (gfc_trans_dummy_array_bias): Likewise.
413
414 2006-04-01  Roger Sayle  <roger@eyesopen.com>
415
416         * dependency.c (gfc_is_inside_range): Delete.
417         (gfc_check_element_vs_section): Significant rewrite.
418
419 2006-04-01  Roger Sayle  <roger@eyesopen.com>
420
421         * dependency.c (gfc_dep_compare_expr): Strip parentheses and unary
422         plus operators when comparing expressions.  Handle comparisons of
423         the form "X+C vs. X", "X vs. X+C", "X-C vs. X" and "X vs. X-C" where
424         C is an integer constant.  Handle comparisons of the form "P+Q vs.
425         R+S" and "P-Q vs. R-S".  Handle comparisons of integral extensions
426         specially (increasing functions) so extend(A) > extend(B), when A>B.
427         (gfc_check_element_vs_element): Move test later, so that we ignore
428         the fact that "A < B" or "A > B" when A or B contains a forall index.
429
430 2006-03-31  Asher Langton  <langton2@llnl.gov>
431
432         PR fortran/25358
433         * expr.c (gfc_check_assign): Allow cray pointee to be assumes-size.
434         
435 2006-03-30  Paul Thomas <paulthomas2@wanadoo.fr>
436             Bud Davis  <bdavis9659@sbcglobal.net>
437
438         PR 21130
439         * module.c (load_needed): Traverse entire tree before returning.
440
441 2006-03-30  Roger Sayle  <roger@eyesopen.com>
442
443         PR middle-end/22375
444         * trans.c (gfc_trans_runtime_check): Promote the arguments of
445         __builtin_expect to the correct types, and the result back to
446         boolean_type_node.
447
448 2006-03-29  Carlos O'Donell  <carlos@codesourcery.com>
449
450         * Make-lang.in: Rename docdir to gcc_docdir.
451
452 2006-03-28  Steven G. Kargl  <kargls@comcast.net>
453
454         * intrinsic.texi: s/floor/float in previous commit.
455
456 2006-03-28 Paul Thomas <pault@gcc.gnu.org>
457
458         PR fortran/26779
459         * resolve.c (resolve_fl_procedure): Do not check the access of
460         derived types for internal procedures.
461
462 2006-03-27  Jakub Jelinek  <jakub@redhat.com>
463
464         * io.c (check_io_constraints): Don't look at
465         dt->advance->value.charater.string, unless it is a CHARACTER
466         constant.
467
468         * f95-lang.c (gfc_get_alias_set): New function.
469         (LANG_HOOKS_GET_ALIAS_SET): Define.
470
471 2006-03-25  Steven G. Kargl  <kargls@comcast.net>
472
473         PR fortran/26816
474         * intrinsic.c (add_functions): Allow FLOAT to accept all integer kinds.
475         * intrinsic.texi: Document FLOAT.
476
477 2006-03-25  Thomas Koenig  <Thomas.Koenig@online.de>
478
479         PR fortran/26769
480         * iresolve.c (gfc_resolve_reshape):  Remove doubling of
481         kind for complex. For real(kind=10), call reshape_r10.
482         (gfc_resolve_transpose):  For real(kind=10), call
483         transpose_r10.
484
485 2006-03-25  Roger Sayle  <roger@eyesopen.com>
486
487         * dependency.c (gfc_check_dependency): Improve handling of pointers;
488         Two variables of different types can't have a dependency, and two
489         variables with the same symbol are equal, even if pointers.
490
491 2006-03-24  Roger Sayle  <roger@eyesopen.com>
492
493         * gfortran.h (gfc_symbol): Add a new "forall_index" bit field.
494         * match.c (match_forall_iterator): Set forall_index field on
495         the iteration variable's symbol.
496         * dependency.c (contains_forall_index_p): New function to
497         traverse a gfc_expr to check whether it contains a variable
498         with forall_index set in it's symbol.
499         (gfc_check_element_vs_element): Return GFC_DEP_EQUAL for scalar
500         constant expressions that don't variables used as FORALL indices.
501
502 2006-03-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
503
504         PR driver/22600
505         * error.c (gfc_fatal_error): Return ICE_EXIT_CODE instead of 4.
506
507 2006-03-22  Thomas Koenig  <Thomas.Koenig@online.de>
508
509         PR fortran/19303
510         * gfortran.h (gfc_option_t):  Add record_marker.
511         * lang.opt:  Add -frecord-marker=4 and -frecord-marker=8.
512         * trans-decl.c:  Add gfor_fndecl_set_record_marker.
513         (gfc_build_builtin_function_decls): Set
514         gfor_fndecl_set_record_marker.
515         (gfc_generate_function_code):  If we are in the main program
516         and -frecord-marker was provided, call set_record_marker.
517         * options.c (gfc_handle_option):  Add handling for
518         -frecord-marker=4 and -frecord-marker=8.
519         * invoke.texi:  Document -frecord-marker.
520
521 2006-03-22  Paul Thomas  <pault@gcc.gnu.org>
522
523         PR fortran/17298
524         * trans-intrinsic.c (gfc_conv_intrinsic_array_transfer): New
525         function to implement array valued TRANSFER intrinsic.
526         (gfc_conv_intrinsic_function): Call the new function if TRANSFER
527         and non-null se->ss.
528         (gfc_walk_intrinsic_function): Treat TRANSFER as one of the
529         special cases by calling gfc_walk_intrinsic_libfunc directly.
530
531 2006-03-21  Toon Moene  <toon@moene.indiv.nluug.nl>
532
533         * options.c (gfc_init_options): Initialize
534         flag_argument_noalias to 3.
535
536 2006-03-20  Thomas Koenig  <Thomas.Koenig@online.de>
537
538         PR fortran/20935
539         * iresolve.c (gfc_resolve_maxloc):   If mask is scalar,
540         prefix the function name with an "s".  If the mask is scalar
541         or if its kind is smaller than gfc_default_logical_kind,
542         coerce it to default kind.
543         (gfc_resolve_maxval):  Likewise.
544         (gfc_resolve_minloc):  Likewise.
545         (gfc_resolve_minval):  Likewise.
546         (gfc_resolve_product):  Likewise.
547         (gfc_resolve_sum):  Likewise.
548
549 2006-03-19  Paul Thomas  <pault@gcc.gnu.org>
550
551         PR fortran/26741
552         *expr.c (external_spec_function): Permit elemental functions.
553
554         PR fortran/26716
555         *interface.c (compare_actual_formal): Detect call for procedure
556         usage and require rank checking, in this case, for assumed shape
557         and deferred shape arrays.
558         (gfc_procedure_use): Revert to pre-PR25070 call to
559         compare_actual_formal that does not require rank checking..
560
561 2006-03-16  Roger Sayle  <roger@eyesopen.com>
562
563         * gfortran.h (gfc_equiv_info): Add length field.
564         * trans-common.c (copy_equiv_list_to_ns): Set the length field.
565         * dependency.c (gfc_are_equivalenced_arrays): Use both the offset
566         and length fields to determine whether the two equivalenced symbols
567         overlap in memory.
568
569 2006-03-14  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
570
571         PR fortran/19101
572         * gfortran.h: Add warn_ampersand.
573         * invoke.texi: Add documentation for new option.
574         * lang.opt: Add Wampersand.
575         * options.c (gfc_init_options): Initialize warn_ampersand.
576         (gfc_post_options): Set the warn if pedantic.
577         (set_Wall): Set warn_ampersand.
578         (gfc_handle_option: Add Wampersand for itself, -std=f95, and -std=f2003.
579         * scanner.c (gfc_next_char_literal): Add test for missing '&' in
580         continued character constant and give warning if missing.
581
582 2006-03-14  Steven G. Kargl  <kargls@comcast.net>
583
584         PR 18537
585         * gfortran.h: Wrap Copyright line.
586         (gfc_option_t): add warn_tabs member.
587         * lang.opt: Update Coyright year.  Add the Wtabs.
588         * invoke.texi: Document -Wtabs.
589         * scanner.c (gfc_gobble_whitespace): Use warn_tabs.  Add linenum to
590         suppress multiple warnings.
591         (load_line): Use warn_tabs.  Add linenum, current_line, seen_comment
592         to suppress multiple warnings.
593         * options.c (gfc_init_options): Initialize warn_tabs.
594         (set_Wall): set warn_tabs for -Wall.
595         (gfc_post_options): Adjust flag_tabs depending on -pedantic.
596         (gfc_handle_option):  Process command-line option -W[no-]tabs
597
598 2006-03-13  Paul Thomas  <pault@gcc.gnu.org>
599
600         PR fortran/25378
601         * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): Set the initial position to zero and
602         modify the condition for updating it, to implement the F2003 requirement for all(mask)
603         is false.
604
605 2006-03-13  Jakub Jelinek  <jakub@redhat.com>
606
607         * trans-openmp.c (gfc_trans_omp_variable): Handle references
608         to parent result.
609         * trans-expr.c (gfc_conv_variable): Remove useless setting
610         of parent_flag, formatting.
611
612         * trans-decl.c (gfc_get_fake_result_decl): Re-add setting of
613         GFC_DECL_RESULT flag.
614
615 2003-03-11  Roger Sayle  <roger@eyesopen.com>
616
617         * dependency.c (gfc_dep_compare_expr) <EXPR_OP>: Allow unary and
618         binary operators to compare equal if their operands are equal.
619         <EXPR_FUNCTION>: Allow "constant" intrinsic conversion functions
620         to compare equal, if their operands are equal.
621
622 2006-03-11  Erik Edelmann  <eedelman@gcc.gnu.org>
623
624         * symbol.c (check_conflict): Allow allocatable function results,
625         except for elemental functions.
626         * trans-array.c (gfc_trans_allocate_temp_array): Rename to ...
627         (gfc_trans_create_temp_array): ... this, and add new argument
628         callee_alloc.
629         (gfc_trans_array_constructor, gfc_conv_loop_setup): Update call
630         to gfc_trans_allocate_temp_array.
631         * trans-array.h (gfc_trans_allocate_temp_array): Update prototype.
632         * trans-expr.c (gfc_conv_function_call): Use new arg of
633         gfc_trans_create_temp_array avoid pre-allocation of temporary
634         result variables of pointer AND allocatable functions.
635         (gfc_trans_arrayfunc_assign): Return NULL for allocatable
636         functions.
637         * resolve.c (resolve_symbol): Copy value of 'allocatable' attribute
638         from sym->result to sym.
639
640 2006-03-09  Erik Edelmann  <eedelman@gcc.gnu.org>
641
642         * trans-expr.c (gfc_add_interface_mapping): Copy 'allocatable'
643         attribute from sym to new_sym.  Call build_fold_indirect_ref()
644         for allocatable arguments.
645
646 2006-03-09 Paul Thomas <pault@gcc.gnu.org>
647
648         PR fortran/26257
649         * trans-array.c (gfc_conv_expr_descriptor): Exclude calculation of
650         the offset and data when se->data_not_needed is set.
651         * trans.h: Include the data_not_need bit in gfc_se.
652         * trans-intrinsic.c (gfc_conv_intrinsic_size): Set it for SIZE.
653
654 2006-03-06  Paul Thomas  <pault@gcc.gnu.org>
655             Erik Edelmann  <eedelman@gcc.gnu.org>
656
657         * trans-array.c (gfc_trans_dealloc_allocated): New function.
658         (gfc_trans_deferred_array): Use it, instead of inline code.
659         * trans-array.h: Prototype for gfc_trans_dealloc_allocated().
660         * trans-expr.c (gfc_conv_function_call): Deallocate allocated
661         ALLOCATABLE, INTENT(OUT) arguments upon procedure entry.
662
663 2006-03-06  Paul Thomas  <pault@gcc.gnu.org>
664
665         PR fortran/26107
666         * resolve.c (resolve_function): Add name after test for pureness.
667
668         PR fortran/19546
669         * trans-expr.c (gfc_conv_variable): Detect reference to parent result,
670         store current_function_decl, replace with parent, whilst calls are
671         made to gfc_get_fake_result_decl, and restore afterwards. Signal this
672         to gfc_get_fake_result_decl with a new argument, parent_flag.
673         * trans-stmt.c (gfc_trans_return): gfc_get_fake_result_decl 2nd arg
674         is set to zero.
675         * trans.h: Add parent_flag to gfc_get_fake_result_decl prototype.
676         * trans-decl.c (gfc_get_fake_result_decl): On parent_flag, being set,
677         add decl to parent function. Replace refs to current_fake_result_decl
678         with refs to this_result_decl.
679         (gfc_generate_function_code): Null parent_fake_result_decl before the
680         translation of code for contained procedures. Set parent_flag to zero
681         in call to gfc_get_fake_result_decl.
682         * trans-intrinsic.c (gfc_conv_intrinsic_len): The same.
683
684 2006-03-05  Steven G. Kargl  <kargls@comcast.net>
685
686         * simplify.c (gfc_simplify_verify):  Fix return when SET=''.
687
688 2006-03-05  Erik Edelmann  <eedelman@gcc.gnu.org>
689
690         PR fortran/16136
691         * symbol.c (conf_std): New macro.
692         (check_conflict): Use it to allow ALLOCATABLE dummy
693         arguments for F2003.
694         * trans-expr.c (gfc_conv_function_call): Pass the
695         address of the array descriptor when dummy argument is
696         ALLOCATABLE.
697         * interface.c (compare_allocatable): New function.
698         (compare_actual_formal): Use it.
699         * resolve.c (resolve_deallocate_expr,
700         resolve_allocate_expr): Check that INTENT(IN) variables
701         aren't (de)allocated.
702         * gfortran.texi (Fortran 2003 status): List ALLOCATABLE
703         dummy arguments as supported.
704
705 2006-03-03  Roger Sayle  <roger@eyesopen.com>
706
707         * dependency.c (gfc_check_element_vs_element): Revert last change.
708
709 2006-03-03  Roger Sayle  <roger@eyesopen.com>
710
711         * dependency.c (gfc_check_element_vs_element): Consider two
712         unordered scalar subscripts as (potentially) equal.
713
714 2006-03-03  Roger Sayle  <roger@eyesopen.com>
715
716         * dependency.c (gfc_check_dependency): Call gfc_dep_resolver to
717         check whether two array references have a dependency.
718         (gfc_check_element_vs_element): Assume lref and rref must be
719         REF_ARRAYs.  If gfc_dep_compare_expr returns -2, assume these
720         references could potentially overlap.
721         (gfc_dep_resolver): Whitespace and comment tweaks.  Assume a
722         dependency if the references have different depths.  Rewrite
723         final term to clarrify we only have a dependency for overlaps.
724
725 2006-03-03  Thomas Koenig  <Thomas.Koenig@online.de>
726
727         PR fortran/25031
728         * trans-array.h:  Adjust gfc_array_allocate prototype.
729         * trans-array.c (gfc_array_allocate):  Change type of
730         gfc_array_allocatate to bool.  Function returns true if
731         it operates on an array.  Change second argument to gfc_expr.
732         Find last reference in chain.
733         If the function operates on an allocatable array, emit call to
734         allocate_array() or allocate64_array().
735         * trans-stmt.c (gfc_trans_allocate):  Code to follow to last
736         reference has been moved to gfc_array_allocate.
737         * trans.h:  Add declaration for gfor_fndecl_allocate_array and
738         gfor_fndecl_allocate64_array.
739         (gfc_build_builtin_function_decls):  Add gfor_fndecl_allocate_array
740         and gfor_fndecl_allocate64_array.
741
742 2006-03-01  Roger Sayle  <roger@eyesopen.com>
743
744         * trans-stmt.c (generate_loop_for_temp_to_lhs): Add an additional
745         INVERT argument to invert the sense of the WHEREMASK argument.
746         Remove unneeded code to AND together a list of masks.
747         (generate_loop_for_rhs_to_temp): Likewise.
748         (gfc_trans_assign_need_temp): Likewise.
749         (gfc_trans_forall_1): Likewise.
750         (gfc_evaluate_where_mask): Likewise, add a new INVERT argument
751         to specify the sense of the MASK argument.
752         (gfc_trans_where_assign): Likewise.
753         (gfc_trans_where_2): Likewise.  Restructure code that decides
754         whether we need to allocate zero, one or two temporary masks.
755         If this is a top-level WHERE (i.e. the incoming MASK is NULL),
756         we only need to allocate at most one temporary mask, and can
757         invert it's sense to provide the complementary pending execution
758         mask.  Only calculate the size of the required temporary arrays
759         if we need any.
760         (gfc_trans_where): Update call to gfc_trans_where_2.
761
762 2006-03-01  Paul Thomas  <pault@gcc.gnu.org>
763
764         * iresolve.c (gfc_resolve_dot_product):  Remove any difference in
765         treatment of logical types.
766         * trans-intrinsic.c (gfc_conv_intrinsic_dot_product):  New function. 
767
768         PR fortran/26393
769         * trans-decl.c (gfc_get_symbol_decl): Extend condition that symbols
770         must be referenced to include unreferenced symbols in an interface
771         body. 
772
773         PR fortran/20938
774         * trans-array.c (gfc_conv_resolve_dependencies): Add call to
775         gfc_are_equivalenced_arrays.
776         * symbol.c (gfc_free_equiv_infos, gfc_free_equiv_lists): New
777         functions. (gfc_free_namespace): Call them.
778         * trans-common.c (copy_equiv_list_to_ns): New function.
779         (add_equivalences): Call it.
780         * gfortran.h: Add equiv_lists to gfc_namespace and define
781         gfc_equiv_list and gfc_equiv_info.
782         * dependency.c (gfc_are_equivalenced_arrays): New function.
783         (gfc_check_dependency): Call it.
784         * dependency.h: Prototype for gfc_are_equivalenced_arrays.
785
786 2006-03-01  Roger Sayle  <roger@eyesopen.com>
787
788         * dependency.c (gfc_is_same_range): Compare the stride, lower and
789         upper bounds when testing array reference ranges for equality.
790         (gfc_check_dependency): Fix indentation whitespace.
791         (gfc_check_element_vs_element): Likewise.
792         (gfc_dep_resolver): Likewise.
793
794 2006-02-28  Thomas Koenig  <Thomas.Koenig@online.de>
795
796         * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc):
797         If the mask expression exists and has rank 0, enclose the
798         generated loop in an "if (mask)".  Put the default
799         initialization into the else branch.
800
801 2006-02-25  Thomas Koenig  <Thomas.Koenig@online.de>
802
803         PR fortran/23092
804         * trans-intrinsic.c (gfc_conv_intrinsic_arith):  If the
805         mask expression exists and has rank 0, enclose the generated
806         loop in an "if (mask)".
807         * (gfc_conv_intrinsic_minmaxloc):  Likewise.
808
809 2006-02-24  Paul Thomas  <pault@gcc.gnu.org>
810
811         PR fortran/26409
812         * resolve.c (resolve_contained_functions, resolve_types,
813         gfc_resolve): Revert patch of 2006-02-19.
814
815 2006-02-24  Paul Thomas  <pault@gcc.gnu.org>
816
817         PR fortran/24519
818         * dependency.c (gfc_is_same_range): Correct typo.
819         (gfc_check_section_vs_section): Call gfc_is_same_range.
820
821         PR fortran/25395
822         * trans-common.c (add_equivalences): Add a new flag that is set when
823         an equivalence is seen that prevents more from being reset until the
824         start of a new traversal of the list, thus ensuring completion of
825         all the equivalences.
826
827 2006-02-23  Erik Edelmann  <eedelman@gcc.gnu.org>
828
829         * module.c (read_module): Remove redundant code lines.
830
831 2006-02-20 Rafael \81Ávila de Esp\81índola <rafael.espindola@gmail.com>
832         * Make-lang.in (FORTRAN): Remove
833         (.PHONY): Remove F95 and f95. Add fortran
834
835 2006-02-20  Roger Sayle  <roger@eyesopen.com>
836
837         * trans-stmt.c (gfc_trans_where_2): Avoid updating unused current
838         execution mask for empty WHERE/ELSEWHERE clauses.  Don't allocate
839         temporary mask arrays if they won't be used.
840
841 2006-02-20  Roger Sayle  <roger@eyesopen.com>
842
843         * trans-stmt.c (gfc_trans_where_assign): Remove code to handle
844         traversing a linked list of MASKs.  The MASK is now always a
845         single element requiring no ANDing during the assignment.
846
847 2006-02-19  Thomas Koenig  <Thomas.Koenig@online.de>
848
849         * gfortran.texi:  Document environment variables which
850         influence runtime behavior.
851
852 2006-02-19  H.J. Lu  <hongjiu.lu@intel.com>
853
854         * resolve.c (resolve_contained_functions): Call resolve_entries
855         first.
856         (resolve_types): Remove calls to resolve_entries and
857         resolve_contained_functions.
858         (gfc_resolve): Call resolve_contained_functions.
859
860 2006-02-19  Erik Edelmann  <eedelman@gcc.gnu.org>
861
862         PR fortran/26201
863         * intrinsic.c (gfc_convert_type_warn): Call
864         gfc_intrinsic_symbol() on the newly created symbol.
865
866 2006-02-19  Paul Thomas  <pault@gcc.gnu.org>
867
868         PR fortran/25054
869         * resolve.c (is_non_constant_shape_array): New function.
870         (resolve_fl_variable): Remove code for the new function and call it.
871         (resolve_fl_namelist): New function.  Add test for namelist array
872         with non-constant shape, using is_non_constant_shape_array.
873         (resolve_symbol): Remove code for resolve_fl_namelist and call it.
874
875         PR fortran/25089
876         * match.c (match_namelist): Increment the refs field of an accepted
877         namelist object symbol.
878         * resolve.c (resolve_fl_namelist): Test namelist objects for a conflict
879         with contained or module procedures.
880
881 2006-02-18  Roger Sayle  <roger@eyesopen.com>
882
883         * trans-stmt.c (struct temporary_list): Delete.
884         (gfc_trans_where_2): Major reorganization.  Remove no longer needed
885         TEMP argument.  Allocate and deallocate the control mask and
886         pending control mask locally.
887         (gfc_trans_forall_1): Delete TEMP local variable, and update
888         call to gfc_trans_where_2.  No need to deallocate arrays after.
889         (gfc_evaluate_where_mask): Major reorganization.  Change return
890         type to void.  Pass in parent execution mask, MASK, and two
891         already allocated mask arrays CMASK and PMASK.  On return
892         CMASK := MASK & COND, PMASK := MASK & !COND.  MASK, CMASK and
893         CMASK may all be NULL, or refer to the same temporary arrays.
894         (gfc_trans_where): Update call to gfc_trans_where_2.  We no
895         longer need a TEMP variable or to deallocate temporary arrays
896         allocated by gfc_trans_where_2.
897
898 2006-02-18   Danny Smith  <dannysmith@users.sourceforeg.net>
899
900         * gfortran.h (gfc_add_attribute): Change uint to unsigned int.
901         * symbol.c (gfc_add_attribute): Likewise for definition.
902         * resolve.c (resolve_global_procedure): Likewise for variable 'type'.
903
904 2006-02-17  Richard Sandiford  <richard@codesourcery.com>
905
906         * trans-common.c: Include rtl.h earlier.
907         * trans-decl.c: Likewise.
908
909 2006-02-16  Jakub Jelinek  <jakub@redhat.com>
910
911         PR fortran/26224
912         * parse.c (parse_omp_do, parse_omp_structured_block): Call
913         gfc_commit_symbols and gfc_warning_check.
914
915         * openmp.c (resolve_omp_clauses): Add a dummy case label to workaround
916         PR middle-end/26316.
917
918 2006-02-16  Paul Thomas  <pault@gcc.gnu.org>
919
920         PR fortran/24557
921         * trans-expr.c (gfc_add_interface_mapping): Use the actual argument
922         for character(*) arrays, rather than casting to the type and kind
923         parameters of the formal argument.
924
925 2006-02-15  Toon Moene  <toon@moene.indiv.nluug.nl>
926
927         PR fortran/26054
928         * options.c: Do not warn for Fortran 2003 features by default.
929
930 2006-02-15  Tobias Schl\81üter  <tobias.schlueter@physik.uni-muenchen.de>
931
932         * check.c: Update copyright years.
933         
934         * check.c (gfc_check_minloc_maxloc, check_reduction): Don't call
935         dim_range_check on not-present optional dim argument.
936
937 2006-02-15  Jakub Jelinek  <jakub@redhat.com>
938
939         PR libgomp/25938
940         PR libgomp/25984
941         * Make-lang.in (install-finclude-dir): New goal.
942         (fortran.install-common): Depend on install-finclude-dir.
943         * lang-specs.h: If not -nostdinc, add -I finclude.
944
945 2006-02-14  Thomas Koenig  <Thomas.Koenig@online.de>
946
947         PR fortran/25045
948         * check.c (dim_check):  Perform all checks if dim is optional.
949         (gfc_check_minloc_maxloc):  Use dim_check and dim_rank_check
950         to check dim argument.
951         (check_reduction):  Likewise.
952
953 2006-02-14  Tobias Schl\81üter  <tobias.schlueter@physik.uni-muenchen.de>
954
955         PR fortran/26277
956         * io.c (match_ltag): Mark label as referenced.
957
958 2006-02-14  Jakub Jelinek  <jakub@redhat.com>
959             Richard Henderson  <rth@redhat.com>
960             Diego Novillo  <dnovillo@redhat.com>
961
962         * invoke.texi: Document -fopenmp.
963         * gfortran.texi (Extensions): Document OpenMP.
964
965         Backport from gomp-20050608-branch
966         * trans-openmp.c: Call build_omp_clause instead of
967         make_node when creating OMP_CLAUSE_* trees.
968         (gfc_trans_omp_reduction_list): Remove argument 'code'.
969         Adjust all callers.
970
971         * trans.h (build4_v): Define.
972         * trans-openmp.c: Call build4_v to create OMP_PARALLEL nodes.
973         Call build3_v to create OMP_SECTIONS nodes.
974
975         PR fortran/25162
976         * openmp.c (gfc_match_omp_variable_list): Call gfc_set_sym_referenced
977         on all symbols added to the variable list.
978
979         * openmp.c (gfc_match_omp_clauses): Fix check for non-INTRINSIC
980         procedure symbol in REDUCTION.
981
982         * trans-openmp.c (gfc_trans_omp_array_reduction): Use gfc_add
983         for MINUS_EXPR OMP_CLAUSE_REDUCTION_CODE.
984
985         * trans-openmp.c (gfc_trans_omp_do): Add PBLOCK argument.  If PBLOCK
986         is non-NULL, evaluate INIT/COND/INCR and chunk size expressions in
987         that statement block.
988         (gfc_trans_omp_parallel_do): Pass non-NULL PBLOCK to gfc_trans_omp_do
989         for non-ordered non-static combined loops.
990         (gfc_trans_omp_directive): Pass NULL PBLOCK to gfc_trans_omp_do.
991
992         * openmp.c: Include target.h and toplev.h.
993         (gfc_match_omp_threadprivate): Emit diagnostic if target does
994         not support TLS.
995         * Make-lang.in (fortran/openmp.o): Add dependencies on
996         target.h and toplev.h.
997
998         * trans-decl.c (gfc_get_fake_result_decl): Set GFC_DECL_RESULT.
999         * trans-openmp.c (gfc_omp_privatize_by_reference): Make
1000         DECL_ARTIFICIAL vars predetermined shared except GFC_DECL_RESULT.
1001         (gfc_omp_disregard_value_expr): Handle GFC_DECL_RESULT.
1002         (gfc_trans_omp_variable): New function.
1003         (gfc_trans_omp_variable_list, gfc_trans_omp_reduction_list): Use it.
1004         * trans.h (GFC_DECL_RESULT): Define.
1005
1006         * trans-openmp.c (gfc_omp_firstprivatize_type_sizes): New function.
1007         * f95-lang.c (LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES): Define.
1008         * trans.h (gfc_omp_firstprivatize_type_sizes): New prototype.
1009
1010         * trans-openmp.c (gfc_omp_privatize_by_reference): Return
1011         true if a pointer has GFC_DECL_SAVED_DESCRIPTOR set.
1012         (gfc_trans_omp_array_reduction, gfc_trans_omp_reduction_list): New
1013         functions.
1014         (gfc_trans_omp_clauses): Add WHERE argument.  Call
1015         gfc_trans_omp_reduction_list rather than gfc_trans_omp_variable_list
1016         for reductions.
1017         (gfc_trans_omp_do, gfc_trans_omp_parallel, gfc_trans_omp_parallel_do,
1018         gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare,
1019         gfc_trans_omp_sections, gfc_trans_omp_single): Adjust
1020         gfc_trans_omp_clauses callers.
1021
1022         * openmp.c (omp_current_do_code): New var.
1023         (gfc_resolve_omp_do_blocks): New function.
1024         (gfc_resolve_omp_parallel_blocks): Call it.
1025         (gfc_resolve_do_iterator): Add CODE argument.  Don't propagate
1026         predetermination if argument is !$omp do or !$omp parallel do
1027         iteration variable.
1028         * resolve.c (resolve_code): Call gfc_resolve_omp_do_blocks
1029         for EXEC_OMP_DO.  Adjust gfc_resolve_do_iterator caller.
1030         * fortran.h (gfc_resolve_omp_do_blocks): New prototype.
1031         (gfc_resolve_do_iterator): Add CODE argument.
1032
1033         * trans.h (gfc_omp_predetermined_sharing,
1034         gfc_omp_disregard_value_expr, gfc_omp_private_debug_clause): New
1035         prototypes.
1036         (GFC_DECL_COMMON_OR_EQUIV, GFC_DECL_CRAY_POINTEE): Define.
1037         * trans-openmp.c (gfc_omp_predetermined_sharing,
1038         gfc_omp_disregard_value_expr, gfc_omp_private_debug_clause): New
1039         functions.
1040         * trans-common.c (build_equiv_decl, build_common_decl,
1041         create_common): Set GFC_DECL_COMMON_OR_EQUIV flag on the decls.
1042         * trans-decl.c (gfc_finish_cray_pointee): Set GFC_DECL_CRAY_POINTEE
1043         on the decl.
1044         * f95-lang.c (LANG_HOOKS_OMP_PREDETERMINED_SHARING,
1045         LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR,
1046         LANG_HOOKS_OMP_PRIVATE_DEBUG_CLAUSE): Define.
1047
1048         * openmp.c (resolve_omp_clauses): Remove extraneous comma.
1049
1050         * symbol.c (check_conflict): Add conflict between cray_pointee and
1051         threadprivate.
1052         * openmp.c (gfc_match_omp_threadprivate): Fail if
1053         gfc_add_threadprivate returned FAILURE.
1054         (resolve_omp_clauses): Diagnose Cray pointees in SHARED,
1055         {,FIRST,LAST}PRIVATE and REDUCTION clauses and Cray pointers in
1056         {FIRST,LAST}PRIVATE and REDUCTION clauses.
1057
1058         * resolve.c (omp_workshare_flag): New variable.
1059         (resolve_function): Diagnose use of non-ELEMENTAL user defined
1060         function in WORKSHARE construct.
1061         (resolve_code): Cleanup forall_save use.  Make sure omp_workshare_flag
1062         is set to correct value in different contexts.
1063
1064         * openmp.c (resolve_omp_clauses): Replace %s with '%s' when printing
1065         variable name.
1066         (resolve_omp_atomic): Likewise.
1067
1068         PR fortran/24493
1069         * scanner.c (skip_free_comments): Set at_bol at the beginning of the
1070         loop, not before it.
1071         (skip_fixed_comments): Handle ! comments in the middle of line here
1072         as well.
1073         (gfc_skip_comments): Use skip_fixed_comments for FIXED_FORM even if
1074         not at BOL.
1075         (gfc_next_char_literal): Fix expected canonicalized *$omp string.
1076
1077         * trans-openmp.c (gfc_trans_omp_do): Use make_node and explicit
1078         initialization to build OMP_FOR instead of build.
1079
1080         * trans-decl.c (gfc_gimplify_function): Invoke
1081         diagnose_omp_structured_block_errors.
1082
1083         * trans-openmp.c (gfc_trans_omp_master): Use OMP_MASTER.
1084         (gfc_trans_omp_ordered): Use OMP_ORDERED.
1085
1086         * gfortran.h (gfc_resolve_do_iterator, gfc_resolve_blocks,
1087         gfc_resolve_omp_parallel_blocks): New prototypes.
1088         * resolve.c (resolve_blocks): Renamed to...
1089         (gfc_resolve_blocks): ... this.  Remove static.
1090         (gfc_resolve_forall): Adjust caller.
1091         (resolve_code): Only call gfc_resolve_blocks if code->block != 0
1092         and not for EXEC_OMP_PARALLEL* directives.  Call
1093         gfc_resolve_omp_parallel_blocks for EXEC_OMP_PARALLEL* directives.
1094         Call gfc_resolve_do_iterator if resolved successfully EXEC_DO
1095         iterator.
1096         * openmp.c: Include pointer-set.h.
1097         (omp_current_ctx): New variable.
1098         (gfc_resolve_omp_parallel_blocks, gfc_resolve_do_iterator): New
1099         functions.
1100         * Make-lang.in (fortran/openmp.o): Depend on pointer-set.h.
1101
1102         * openmp.c (gfc_match_omp_clauses): For max/min/iand/ior/ieor,
1103         look up symbol if it exists, use its name instead and, if it is not
1104         INTRINSIC, issue diagnostics.
1105
1106         * parse.c (parse_omp_do): Handle implied end do properly.
1107         (parse_executable): If parse_omp_do returned ST_IMPLIED_ENDDO,
1108         return it instead of continuing.
1109
1110         * trans-openmp.c (gfc_trans_omp_critical): Update for changed
1111         operand numbering.
1112         (gfc_trans_omp_do, gfc_trans_omp_parallel, gfc_trans_omp_parallel_do,
1113         gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare,
1114         gfc_trans_omp_sections, gfc_trans_omp_single): Likewise.
1115
1116         * trans.h (gfc_omp_privatize_by_reference): New prototype.
1117         * f95-lang.c (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Redefine
1118         to gfc_omp_privatize_by_reference.
1119         * trans-openmp.c (gfc_omp_privatize_by_reference): New function.
1120
1121         * trans-stmt.h (gfc_trans_omp_directive): Add comment.
1122
1123         * openmp.c (gfc_match_omp_variable_list): Add ALLOW_COMMON argument.
1124         Disallow COMMON matching if it is set.
1125         (gfc_match_omp_clauses, gfc_match_omp_flush): Adjust all callers.
1126         (resolve_omp_clauses): Show locus in error messages.  Check that
1127         variable types in reduction clauses are appropriate for reduction
1128         operators.
1129
1130         * resolve.c (resolve_symbol): Don't error if a threadprivate module
1131         variable isn't SAVEd.
1132
1133         * trans-openmp.c (gfc_trans_omp_do): Put count into BLOCK, not BODY.
1134         Fix typo in condition.  Fix DOVAR initialization.
1135
1136         * openmp.c (gfc_match_omp_clauses): Match min/iand/ior/ieor
1137         rather than .min. etc.
1138
1139         * trans-openmpc.c (omp_not_yet): Remove.
1140         (gfc_trans_omp_parallel_do): Keep listprivate clause on parallel.
1141         Force creation of BIND_EXPR around the workshare construct.
1142         (gfc_trans_omp_parallel_sections): Likewise.
1143         (gfc_trans_omp_parallel_workshare): Likewise.
1144
1145         * types.def (BT_I16, BT_FN_I16_VPTR_I16,
1146         BT_FN_BOOL_VPTR_I16_I16, BT_FN_I16_VPTR_I16_I16): Add.
1147
1148         * trans-openmp.c (gfc_trans_omp_clauses): Create OMP_CLAUSE_DEFAULT.
1149         (gfc_trans_omp_code): New function.
1150         (gfc_trans_omp_do): Use it, remove omp_not_yet uses.
1151         (gfc_trans_omp_parallel, gfc_trans_omp_single): Likewise.
1152         (gfc_trans_omp_sections): Likewise.  Only treat empty last section
1153         specially if lastprivate clause is present.
1154         * f95-lang.c (gfc_init_builtin_functions): Create BUILT_IN_TRAP
1155         builtin.
1156
1157         * trans-openmp.c (gfc_trans_omp_variable_list): Update for
1158         OMP_CLAUSE_DECL name change.
1159         (gfc_trans_omp_do): Likewise.
1160
1161         * trans-openmp.c (gfc_trans_omp_clauses): Create OMP_CLAUSE_REDUCTION
1162         clauses.
1163         (gfc_trans_omp_atomic): Build OMP_ATOMIC instead of expanding
1164         sync builtins directly.
1165         (gfc_trans_omp_single): Build OMP_SINGLE statement.
1166
1167         * trans-openmp.c (gfc_trans_add_clause): New.
1168         (gfc_trans_omp_variable_list): Take a tree code and build the clause
1169         node here.  Link it to the head of a list.
1170         (gfc_trans_omp_clauses): Update to match.
1171         (gfc_trans_omp_do): Use gfc_trans_add_clause.
1172
1173         * trans-openmp.c (gfc_trans_omp_clauses): Change second argument to
1174         gfc_omp_clauses *.  Use gfc_evaluate_now instead of creating
1175         temporaries by hand.
1176         (gfc_trans_omp_atomic, gfc_trans_omp_critical): Use buildN_v macros.
1177         (gfc_trans_omp_do): New function.
1178         (gfc_trans_omp_master): Dont' check for gfc_trans_code returning NULL.
1179         (gfc_trans_omp_parallel): Adjust gfc_trans_omp_clauses caller.
1180         Use buildN_v macros.
1181         (gfc_trans_omp_parallel_do, gfc_trans_omp_parallel_sections,
1182         gfc_trans_omp_parallel_workshare, gfc_trans_omp_sections,
1183         gfc_trans_omp_single, gfc_trans_omp_workshare): New functions.
1184         (gfc_trans_omp_directive): Use them.
1185         * parse.c (parse_omp_do): Allow new_st.op == EXEC_NOP.
1186         * openmp.c (resolve_omp_clauses): Check for list items present
1187         in multiple clauses.
1188         (resolve_omp_do): Check that iteration variable is not THREADPRIVATE
1189         and is not present in any clause variable lists other than PRIVATE
1190         or LASTPRIVATE.
1191
1192         * gfortran.h (symbol_attribute): Add threadprivate bit.
1193         (gfc_common_head): Add threadprivate member, change use_assoc
1194         and saved into char to save space.
1195         (gfc_add_threadprivate): New prototype.
1196         * symbol.c (check_conflict): Handle threadprivate.
1197         (gfc_add_threadprivate): New function.
1198         (gfc_copy_attr): Copy threadprivate.
1199         * trans-openmp.c (gfc_trans_omp_clauses): Avoid creating a temporary
1200         if IF or NUM_THREADS is constant.  Create OMP_CLAUSE_SCHEDULE and
1201         OMP_CLAUSE_ORDERED.
1202         * resolve.c (resolve_symbol): Complain if a THREADPRIVATE symbol
1203         outside a module and not in COMMON has is not SAVEd.
1204         (resolve_equivalence): Ensure THREADPRIVATE objects don't get
1205         EQUIVALENCEd.
1206         * trans-common.c: Include target.h and rtl.h.
1207         (build_common_decl): Set DECL_TLS_MODEL if THREADPRIVATE.
1208         * trans-decl.c: Include rtl.h.
1209         (gfc_finish_var_decl): Set DECL_TLS_MODEL if THREADPRIVATE.
1210         * dump-parse-tree.c (gfc_show_attr): Handle THREADPRIVATE.
1211         * Make-lang.in (fortran/trans-decl.o): Depend on $(RTL_H).
1212         (fortran/trans-common.o): Depend on $(RTL_H) and $(TARGET_H).
1213         * openmp.c (gfc_match_omp_variable_list): Ensure COMMON block
1214         is from current namespace.
1215         (gfc_match_omp_threadprivate): Rewrite.
1216         (resolve_omp_clauses): Check some clause restrictions.
1217         * module.c (ab_attribute): Add AB_THREADPRIVATE.
1218         (attr_bits): Add THREADPRIVATE.
1219         (mio_symbol_attribute, mio_symbol_attribute): Handle threadprivate.
1220         (load_commons, write_common, write_blank_common): Adjust for type
1221         change of saved, store/load threadprivate bit from the integer
1222         as well.
1223
1224         * types.def (BT_FN_UINT_UINT): New.
1225         (BT_FN_VOID_UINT_UINT): Remove.
1226
1227         * trans-openmp.c (gfc_trans_omp_clauses, gfc_trans_omp_barrier,
1228         gfc_trans_omp_critical, gfc_trans_omp_flush, gfc_trans_omp_master,
1229         gfc_trans_omp_ordered, gfc_trans_omp_parallel): New functions.
1230         (gfc_trans_omp_directive): Use them.
1231
1232         * openmp.c (expr_references_sym): Add SE argument, don't look
1233         into SE tree.
1234         (is_conversion): New function.
1235         (resolve_omp_atomic): Adjust expr_references_sym callers.  Handle
1236         promoted expressions.
1237         * trans-openmp.c (gfc_trans_omp_atomic): New function.
1238         (gfc_trans_omp_directive): Call it.
1239
1240         * f95-lang.c (builtin_type_for_size): New function.
1241         (gfc_init_builtin_functions): Initialize synchronization and
1242         OpenMP builtins.
1243         * types.def: New file.
1244         * Make-lang.in (f95-lang.o): Depend on $(BUILTINS_DEF) and
1245         fortran/types.def.
1246
1247         * trans-openmp.c: Rename GOMP_* tree codes into OMP_*.
1248
1249         * dump-parse-tree.c (show_symtree): Don't crash if ns->proc_name
1250         is NULL.
1251
1252         * dump-parse-tree.c (gfc_show_namelist, gfc_show_omp_node): New
1253         functions.
1254         (gfc_show_code_node): Call gfc_show_omp_node for EXEC_OMP_* nodes.
1255
1256         * parse.c (parse_omp_do): Call pop_state before next_statement.
1257         * openmp.c (expr_references_sym, resolve_omp_atomic, resolve_omp_do):
1258         New functions.
1259         (gfc_resolve_omp_directive): Call them.
1260         * match.c (match_exit_cycle): Issue error if EXIT or CYCLE statement
1261         leaves an OpenMP structured block or if EXIT terminates !$omp do
1262         loop.
1263
1264         * Make-lang.in (F95_PARSER_OBJS): Add fortran/openmp.o.
1265         (F95_OBJS): Add fortran/trans-openmp.o.
1266         (fortran/trans-openmp.o): Depend on $(GFORTRAN_TRANS_DEPS).
1267         * lang.opt: Add -fopenmp option.
1268         * options.c (gfc_init_options): Initialize it.
1269         (gfc_handle_option): Handle it.
1270         * gfortran.h (ST_OMP_ATOMIC, ST_OMP_BARRIER, ST_OMP_CRITICAL,
1271         ST_OMP_END_CRITICAL, ST_OMP_END_DO, ST_OMP_END_MASTER,
1272         ST_OMP_END_ORDERED, ST_OMP_END_PARALLEL, ST_OMP_END_PARALLEL_DO,
1273         ST_OMP_END_PARALLEL_SECTIONS, ST_OMP_END_PARALLEL_WORKSHARE,
1274         ST_OMP_END_SECTIONS, ST_OMP_END_SINGLE, ST_OMP_END_WORKSHARE,
1275         ST_OMP_DO, ST_OMP_FLUSH, ST_OMP_MASTER, ST_OMP_ORDERED,
1276         ST_OMP_PARALLEL, ST_OMP_PARALLEL_DO, ST_OMP_PARALLEL_SECTIONS,
1277         ST_OMP_PARALLEL_WORKSHARE, ST_OMP_SECTIONS, ST_OMP_SECTION,
1278         ST_OMP_SINGLE, ST_OMP_THREADPRIVATE, ST_OMP_WORKSHARE): New
1279         statement codes.
1280         (OMP_LIST_PRIVATE, OMP_LIST_FIRSTPRIVATE, OMP_LIST_LASTPRIVATE,
1281         OMP_LIST_COPYPRIVATE, OMP_LIST_SHARED, OMP_LIST_COPYIN,
1282         OMP_LIST_PLUS, OMP_LIST_REDUCTION_FIRST, OMP_LIST_MULT,
1283         OMP_LIST_SUB, OMP_LIST_AND, OMP_LIST_OR, OMP_LIST_EQV,
1284         OMP_LIST_NEQV, OMP_LIST_MAX, OMP_LIST_MIN, OMP_LIST_IAND,
1285         OMP_LIST_IOR, OMP_LIST_IEOR, OMP_LIST_REDUCTION_LAST, OMP_LIST_NUM):
1286         New OpenMP variable list types.
1287         (gfc_omp_clauses): New typedef.
1288         (gfc_get_omp_clauses): Define.
1289         (EXEC_OMP_CRITICAL, EXEC_OMP_DO, EXEC_OMP_FLUSH, EXEC_OMP_MASTER,
1290         EXEC_OMP_ORDERED, EXEC_OMP_PARALLEL, EXEC_OMP_PARALLEL_DO,
1291         EXEC_OMP_PARALLEL_SECTIONS, EXEC_OMP_PARALLEL_WORKSHARE,
1292         EXEC_OMP_SECTIONS, EXEC_OMP_SINGLE, EXEC_OMP_WORKSHARE,
1293         EXEC_OMP_ATOMIC, EXEC_OMP_BARRIER, EXEC_OMP_END_NOWAIT,
1294         EXEC_OMP_END_SINGLE): New OpenMP gfc_exec_op codes.
1295         (struct gfc_code): Add omp_clauses, omp_name, omp_namelist
1296         and omp_bool fields to ext union.
1297         (flag_openmp): Declare.
1298         (gfc_free_omp_clauses, gfc_resolve_omp_directive): New prototypes.
1299         * scanner.c (openmp_flag, openmp_locus): New variables.
1300         (skip_free_comments, skip_fixed_comments, gfc_next_char_literal):
1301         Handle OpenMP directive lines and conditional compilation magic
1302         comments.
1303         * parse.h (COMP_OMP_STRUCTURED_BLOCK): New compile state.
1304         * parse.c (decode_omp_directive, parse_omp_do, parse_omp_atomic,
1305         parse_omp_structured_block): New functions.
1306         (next_free, next_fixed): Parse OpenMP directives.
1307         (case_executable, case_exec_markers, case_decl): Add ST_OMP_*
1308         codes.
1309         (gfc_ascii_statement): Handle ST_OMP_* codes.
1310         (parse_executable): Rearrange the loop slightly, so that
1311         parse_omp_do can return next_statement.
1312         * match.h (gfc_match_omp_eos, gfc_match_omp_atomic,
1313         gfc_match_omp_barrier, gfc_match_omp_critical, gfc_match_omp_do,
1314         gfc_match_omp_flush, gfc_match_omp_master, gfc_match_omp_ordered,
1315         gfc_match_omp_parallel, gfc_match_omp_parallel_do,
1316         gfc_match_omp_parallel_sections, gfc_match_omp_parallel_workshare,
1317         gfc_match_omp_sections, gfc_match_omp_single,
1318         gfc_match_omp_threadprivate, gfc_match_omp_workshare,
1319         gfc_match_omp_end_nowait, gfc_match_omp_end_single): New prototypes.
1320         * resolve.c (resolve_blocks): Ignore EXEC_OMP_* block directives.
1321         (resolve_code): Call gfc_resolve_omp_directive on EXEC_OMP_*
1322         directives.
1323         * trans.c (gfc_trans_code): Call gfc_trans_omp_directive for
1324         EXEC_OMP_* directives.
1325         * st.c (gfc_free_statement): Handle EXEC_OMP_* statement freeing.
1326         * trans-stmt.h (gfc_trans_omp_directive): New prototype.
1327         * openmp.c: New file.
1328         * trans-openmp.c: New file.
1329
1330 2006-02-13  Andrew Pinski  <pinskia@physics.uc.edu>
1331             Jakub Jelinek  <jakub@redhat.com>
1332
1333         PR fortran/26246
1334         * trans-decl.c (gfc_get_symbol_decl, gfc_get_fake_result_decl): Use
1335         gfc_add_decl_to_function rather than gfc_finish_var_decl on length.
1336
1337 2006-02-13  Paul Thomas  <pault@gcc.gnu.org>
1338
1339         PR fortran/26074
1340         PR fortran/25103
1341         * resolve.c (resolve_symbol): Extend the requirement that module
1342         arrays have constant bounds to those in the main program.  At the
1343         same time simplify the array bounds, to avoiding trapping parameter
1344         array references, and exclude automatic character length from main
1345         and modules. Rearrange resolve_symbol and resolve_derived to put as
1346         each flavor together, as much as is possible and move all specific
1347         code for flavors FL_VARIABLE, FL_PROCEDURE and FL_PARAMETER into new
1348         functions.
1349         (resolve_fl_var_and_proc, resolve_fl_variable, resolve_fl_procedure):
1350         New functions to do work of resolve_symbol.
1351         (resolve_index_expr): New function that is called from resolved_symbol
1352         and is extracted from resolve_charlen.
1353         (resolve_charlen): Call this new function.
1354         (resolve_fl_derived): Renamed resolve_derived to be consistent with
1355         the naming of the new functions for the other flavours.  Change the
1356         charlen checking so that the style is consistent with other similar
1357         checks. Add the generation of the gfc_dt_list, removed from resolve_
1358         symbol.
1359
1360         PR fortran/20861
1361         * resolve.c (resolve_actual_arglist): Prevent internal procedures
1362         from being dummy arguments.
1363
1364         PR fortran/20871
1365         * resolve.c (resolve_actual_arglist): Prevent pure but non-intrinsic
1366         procedures from being dummy arguments.
1367
1368         PR fortran/25083
1369         * resolve.c (check_data_variable): Add test that data variable is in
1370         COMMON.
1371
1372         PR fortran/25088
1373         * resolve.c (resolve_call): Add test that the subroutine does not
1374         have a type.
1375
1376 2006-02-12  Erik Edelmann  <eedelman@gcc.gnu.org>
1377
1378         PR fortran/25806
1379         * trans-array.c (gfc_trans_allocate_array_storage): New argument
1380         dealloc; free the temporary only if dealloc is true.
1381         (gfc_trans_allocate_temp_array): New argument bool dealloc, to be
1382         passed onwards to gfc_trans_allocate_array_storage.
1383         (gfc_trans_array_constructor, gfc_conv_loop_setup): Update call to
1384         gfc_trans_allocate_temp_array.
1385         * trans-array.h (gfc_trans_allocate_temp_array): Update function
1386         prototype.
1387         * trans-expr.c (gfc_conv_function_call): Set new argument 'dealloc'
1388         to gfc_trans_allocate_temp_array to false in case of functions
1389         returning pointers.
1390         (gfc_trans_arrayfunc_assign): Return NULL for functions returning
1391         pointers.
1392
1393 2006-02-10  Steven G. Kargl  <kargls@comcast.net>
1394
1395         PR fortran/20858
1396         *decl.c (variable_decl): Improve error message.  Remove initialization
1397         typespec.  Wrap long line.
1398         *expr.c (gfc_check_pointer_assign): Permit checking of type, kind type,
1399         and rank.
1400         *simplify.c (gfc_simplify_null): Ensure type, kind type, and rank
1401         are set.
1402
1403
1404 2006-02-10  Tobias Schl\81üter  <tobias.schlueter@physik.uni-muenchen.de>
1405
1406         PR fortran/14771
1407         * arith.c (eval_intrinsic): Accept INTRINSIC_PARENTHESES.
1408         * expr.c (check_intrinsic_op): Likewise.
1409         * module.c (mio_expr): Likewise.
1410
1411 2006-02-09  Tobias Schl\81üter  <tobias.schlueter@physik.uni-muenchen.de>
1412
1413         * dump-parse-tree.c: Update copyright years.
1414         * matchexp.c: Likewise.
1415         * module.c: Likewise.
1416
1417         PR fortran/14771
1418         * gfortran.h (gfc_intrinsic_op): Add INTRINSIC_PARENTHESES.
1419         * dump-parse-tree (gfc_show_expr): Handle INTRINSIC_PARENTHESES.
1420         * expr.c (simplify_intrinsic_op): Treat INTRINSIC_PARENTHESES as
1421         if it were INTRINSIC_UPLUS.
1422         * resolve.c (resolve_operator): Handle INTRINSIC_PARENTHESES.
1423         * match.c (intrinsic_operators): Add INTRINSIC_PARENTHESES.
1424         * matchexp.c (match_primary): Record parentheses surrounding
1425         numeric expressions.
1426         * module.c (intrinsics): Add INTRINSIC_PARENTHESES for module
1427         dumping.
1428         * trans-expr.c (gfc_conv_expr_op): Handle INTRINSIC_PARENTHESES.
1429
1430 2006-02-09  Paul Thomas  <pault@gcc.gnu.org>
1431
1432         PR fortran/26038
1433         * trans-stmt.c (gfc_trans_allocate): Provide assumed character length
1434         scalar with missing backend_decl for the hidden dummy charlen.
1435
1436         PR fortran/25059
1437         * interface.c (gfc_extend_assign): Remove detection of non-PURE
1438         subroutine in assignment interface, with gfc_error, and put it in
1439         * resolve.c (resolve_code).
1440
1441         PR fortran/25070
1442         * interface.c (gfc_procedure_use): Flag rank checking for non-
1443         elemental, contained or interface procedures in call to
1444         (compare_actual_formal), where ranks are checked for assumed
1445         shape arrays..
1446
1447 2006-02-08  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1448
1449         PR libfortran/25425
1450         * trans-decl.c (gfc_generate_function_code): Add new argument,
1451         pedantic, to set_std call.
1452
1453 2006-02-06  Thomas Koenig  <Thomas.Koenig@online.de>
1454
1455         PR libfortran/23815
1456         * gfortran.texi: Document the GFORTRAN_CONVERT_UNIT environment
1457         variable.
1458         * invoke.texi:  Mention the "Runtime" chapter.
1459         Document the -fconvert= option.
1460         * gfortran.h:  Add options_convert.
1461         * lang.opt:  Add fconvert=little-endian, fconvert=big-endian,
1462         fconvert=native and fconvert=swap.
1463         * trans-decl.c (top level):  Add gfor_fndecl_set_convert.
1464         (gfc_build_builtin_function_decls):  Set gfor_fndecl_set_convert.
1465         (gfc_generate_function_code):  If -fconvert was specified,
1466         and this is the main program, add a call to set_convert().
1467         * options.c:  Handle the -fconvert options.
1468
1469 2006-02-06  Roger Sayle  <roger@eyesopen.com>
1470
1471         * trans-stmt.c (gfc_evaluate_where_mask): Allow the NMASK argument
1472         to be NULL to indicate that the not mask isn't required.
1473         (gfc_trans_where_2): Remove PMASK argument.  Avoid calculating the
1474         pending mask for the last clause of a WHERE chain.  Update recursive
1475         call.
1476         (gfc_trans_forall_1): Update call to gfc_trans_where_2.
1477         (gfc_trans_where): Likewise.
1478
1479 2006-02-06  Jakub Jelinek  <jakub@redhat.com>
1480
1481         Backport from gomp-20050608-branch
1482         * trans-decl.c (create_function_arglist): Handle dummy functions.
1483
1484         * trans-decl.c (gfc_get_symbol_decl): Revert explicit setting of
1485         TYPE_SIZE_UNIT.
1486         (gfc_trans_vla_type_sizes): Also "gimplify"
1487         GFC_TYPE_ARRAY_DATAPTR_TYPE for GFC_DESCRIPTOR_TYPE_P types.
1488         * trans-array.c (gfc_trans_deferred_array): Call
1489         gfc_trans_vla_type_sizes.
1490
1491         * trans-decl.c (saved_function_decls, saved_parent_function_decls):
1492         Remove unnecessary initialization.
1493         (create_function_arglist): Make sure __result has complete type.
1494         (gfc_get_fake_result_decl): Change current_fake_result_decl into
1495         a tree chain.  For entry master, create a separate variable
1496         for each result name.  For BT_CHARACTER results, call
1497         gfc_finish_var_decl on length even if it has been already created,
1498         but not pushdecl'ed.
1499         (gfc_trans_vla_type_sizes): For function/entry result, adjust
1500         result value type, not the FUNCTION_TYPE.
1501         (gfc_generate_function_code): Adjust for current_fake_result_decl
1502         changes.
1503         (gfc_trans_deferred_vars): Likewise.  Call gfc_trans_vla_type_sizes
1504         even on result if it is assumed-length character.
1505
1506         * trans-decl.c (gfc_trans_dummy_character): Add SYM argument.
1507         Call gfc_trans_vla_type_sizes.
1508         (gfc_trans_auto_character_variable): Call gfc_trans_vla_type_sizes.
1509         (gfc_trans_vla_one_sizepos, gfc_trans_vla_type_sizes_1,
1510         gfc_trans_vla_type_sizes): New functions.
1511         (gfc_trans_deferred_vars): Adjust gfc_trans_dummy_character
1512         callers.  Call gfc_trans_vla_type_sizes on assumed-length
1513         character parameters.
1514         * trans-array.c (gfc_trans_array_bounds,
1515         gfc_trans_auto_array_allocation, gfc_trans_dummy_array_bias): Call
1516         gfc_trans_vla_type_sizes.
1517         * trans.h (gfc_trans_vla_type_sizes): New prototype.
1518
1519         * trans-decl.c (gfc_build_qualified_array): For non-assumed-size
1520         arrays without constant size, create also an index var for
1521         GFC_TYPE_ARRAY_SIZE (type).  If the type is incomplete, complete
1522         it as 0..size-1.
1523         (gfc_create_string_length): Don't call gfc_defer_symbol_init
1524         if just creating DECL_ARGUMENTS.
1525         (gfc_get_symbol_decl): Call gfc_finish_var_decl and
1526         gfc_defer_symbol_init even if ts.cl->backend_decl is already
1527         set to a VAR_DECL that doesn't have DECL_CONTEXT yet.
1528         (create_function_arglist): Rework, so that hidden length
1529         arguments for CHARACTER parameters are created together with
1530         the parameters.  Resolve ts.cl->backend_decl for CHARACTER
1531         parameters.  If the argument is a non-constant length array
1532         or CHARACTER, ensure PARM_DECL has different type than
1533         its DECL_ARG_TYPE.
1534         (generate_local_decl): Call gfc_get_symbol_decl even
1535         for non-referenced non-constant length CHARACTER parameters
1536         after optionally issuing warnings.
1537         * trans-array.c (gfc_trans_array_bounds): Set last stride
1538         to GFC_TYPE_ARRAY_SIZE (type) to initialize it as well.
1539         (gfc_trans_dummy_array_bias): Initialize GFC_TYPE_ARRAY_SIZE (type)
1540         variable as well.
1541
1542         * trans-expr.c (gfc_conv_expr_val): Fix comment typo.
1543
1544         * trans-stmt.c (gfc_trans_simple_do): Fix comment.
1545
1546 2006-02-04  Roger Sayle  <roger@eyesopen.com>
1547
1548         * dependency.c (gfc_check_dependency): Remove unused vars and nvars
1549         arguments.  Replace with an "identical" argument.  A full array
1550         reference to the same symbol is a dependency if identical is true.
1551         * dependency.h (gfc_check_dependency): Update prototype.
1552         * trans-array.h (gfc_check_dependency): Delete duplicate prototype.
1553         * trans-stmt.c: #include dependency.h for gfc_check_dependency.
1554         (gfc_trans_forall_1): Update calls to gfc_check_dependency.
1555         (gfc_trans_where_2): Likewise.  Remove unneeded variables.
1556         (gfc_trans_where_3): New function for simple non-dependent WHEREs.
1557         (gfc_trans_where): Call gfc_trans_where_3 to translate simple
1558         F90-style WHERE statements without internal dependencies.
1559         * Make-lang.in (trans-stmt.o): Depend upon dependency.h.
1560
1561 2006-02-05  H.J. Lu  <hongjiu.lu@intel.com>
1562
1563         PR fortran/26041
1564         PR fortran/26064
1565         * resolve.c (resolve_types): New function.
1566         (resolve_codes): Likewise.
1567         (gfc_resolve): Use them.
1568
1569 2006-02-05  Roger Sayle  <roger@eyesopen.com>
1570
1571         * trans-stmt.c (gfc_evaluate_where_mask): Use LOGICAL*1 for WHERE
1572         masks instead of LOGICAL*4.
1573
1574 2006-02-05  Jakub Jelinek  <jakub@redhat.com>
1575
1576         * resolve.c (resolve_symbol): Initialize constructor_expr to NULL.
1577
1578 2006-02-04  Thomas Koenig  <Thomas.Koenig@online.de>
1579
1580         PR fortran/25075
1581         check.c (identical_dimen_shape):  New function.
1582         (check_dot_product):  Use identical_dimen_shape() to check sizes
1583         for dot_product.
1584         (gfc_check_matmul):  Likewise.
1585         (gfc_check_merge):  Check conformance between tsource and fsource
1586         and between tsource and mask.
1587         (gfc_check_pack):  Check conformance between array and mask.
1588
1589 2006-02-03  Steven G. Kargl  <kargls@comcast>
1590             Paul Thomas  <pault@gcc.gnu.org>
1591
1592         PR fortran/20845
1593         * resolve.c (resolve_symbol): Default initialization of derived type
1594         component reguires the SAVE attribute.
1595
1596 2006-02-02  Steven G. Kargl  <kargls@comcast>
1597
1598         PR fortran/24958
1599         match.c (gfc_match_nullify):  Free the list from head not tail.
1600
1601         PR fortran/25072
1602         * match.c (match_forall_header): Fix internal error caused by bogus
1603         gfc_epxr pointers.
1604
1605
1606 2006-01-31  Thomas Koenig  <Thomas.Koenig@online.de>
1607
1608         PR fortran/26039
1609         expr.c (gfc_check_conformance):  Reorder error message
1610         to avoid plural.
1611         check.c(gfc_check_minloc_maxloc):  Call gfc_check_conformance
1612         for checking arguments array and mask.
1613         (check_reduction):  Likewise.
1614
1615 2006-01-30  Erik Edelmann  <eedelman@gcc.gnu.org>
1616
1617         PR fortran/24266
1618         * trans-io.c (set_internal_unit): Check the rank of the
1619         expression node itself instead of its symbol.
1620
1621 2006-01-29  Paul Thomas  <pault@gcc.gnu.org>
1622
1623         PR fortran/18578
1624         PR fortran/18579
1625         PR fortran/20857
1626         PR fortran/20885
1627         * interface.c (compare_actual_formal): Error for INTENT(OUT or INOUT)
1628         if actual argument is not a variable.
1629
1630 2006-01-28  Paul Thomas  <pault@gcc.gnu.org>
1631
1632         PR fortran/17911
1633         * expr.c (gfc_check_assign, gfc_check_pointer_assign): Emit error if
1634         the lvalue is a use associated procedure.
1635
1636         PR fortran/20895
1637         PR fortran/25030
1638         * expr.c (gfc_check_pointer_assign): Emit error if lvalue and rvalue
1639         character lengths are not the same.  Use gfc_dep_compare_expr for the
1640         comparison.
1641         * gfortran.h: Add prototype for gfc_dep_compare_expr.
1642         * dependency.h: Remove prototype for gfc_dep_compare_expr.
1643
1644 2006-01-27  Paul Thomas  <pault@gcc.gnu.org>
1645
1646         PR fortran/25964
1647         * resolve.c (resolve_function): Add GFC_ISYM_LOC to the list of
1648         generic_ids exempted from assumed size checking.
1649
1650 2006-01-27  Jakub Jelinek  <jakub@redhat.com>
1651
1652         PR fortran/25324
1653         * Make-lang.in (fortran/scanner.o): Depend on toplev.h.
1654         * lang.opt (fpreprocessed): New option.
1655         * scanner.c: Include toplev.h.
1656         (gfc_src_file, gfc_src_preprocessor_lines): New variables.
1657         (preprocessor_line): Unescape filename if there were any
1658         backslashes.
1659         (load_file): If initial and gfc_src_file is not NULL,
1660         use it rather than opening the file.  If gfc_src_preprocessor_lines
1661         has non-NULL elements, pass it to preprocessor_line.
1662         (unescape_filename, gfc_read_orig_filename): New functions.
1663         * gfortran.h (gfc_option_t): Add flag_preprocessed.
1664         (gfc_read_orig_filename): New prototype.
1665         * options.c (gfc_init_options): Clear flag_preprocessed.
1666         (gfc_post_options): If flag_preprocessed, call
1667         gfc_read_orig_filename.
1668         (gfc_handle_option): Handle OPT_fpreprocessed.
1669         * lang-specs.h: Pass -fpreprocessed to f951 if preprocessing
1670         sources.
1671
1672 2006-01-27  Erik Edelmann  <eedelman@gcc.gnu.org>
1673
1674         * symbol.c (free_old_symbol): Fix confusing comment, and add code
1675           to free old_symbol->formal.
1676
1677 2006-01-26  Paul Thomas  <pault@gcc.gnu.org>
1678
1679         PR fortran/25964
1680         * resolve.c (resolve_function): Exclude statement functions from
1681         global reference checking.
1682
1683         PR fortran/25084
1684         PR fortran/20852
1685         PR fortran/25085
1686         PR fortran/25086
1687         * resolve.c (resolve_function): Declare a gfc_symbol to replace the
1688         references through the symtree to the symbol associated with the
1689         function expresion. Give error on reference to an assumed character
1690         length function is defined in an interface or an external function
1691         that is not a dummy argument.
1692         (resolve_symbol): Give error if an assumed character length function
1693         is array-valued, pointer-valued, pure or recursive. Emit warning
1694         that character(*) value functions are obsolescent in F95.
1695
1696         PR fortran/25416
1697         * trans-expr.c (gfc_conv_function_call): The above patch to resolve.c
1698         prevents any assumed character length function call from getting here
1699         except intrinsics such as SPREAD. In this case, ensure that no
1700         segfault occurs from referencing non-existent charlen->length->
1701         expr_type and provide a backend_decl for the charlen from the charlen
1702         of the first actual argument.
1703
1704         Cure temp name confusion.
1705         * trans-expr.c (gfc_get_interface_mapping_array): Change name of
1706         temporary from "parm" to "ifm" to avoid clash with temp coming from
1707         trans-array.c.
1708
1709 2006-01-25  Erik Edelmann  <eedelman@gcc.gnu.org>
1710
1711         PR fortran/25716
1712         * symbol.c (free_old_symbol): New function.
1713         (gfc_commit_symbols): Use it.
1714         (gfc_commit_symbol): New function.
1715         (gfc_use_derived): Use it.
1716         * gfortran.h: Add prototype for gfc_commit_symbol.
1717         * intrinsic.c (gfc_find_function): Search in 'conversion'
1718         if not found in 'functions'.
1719         (gfc_convert_type_warn): Add a symtree to the new
1720         expression node, and commit the new symtree->n.sym.
1721         * resolve.c (gfc_resolve_index): Make sure typespec is
1722         properly initialized.
1723
1724 2006-01-23  Paul Thomas  <pault@gcc.gnu.org>
1725
1726         PR fortran/25901
1727         * decl.c (get_proc_name): Replace subroutine and function attributes
1728         in "already defined" test by the formal arglist pointer being non-NULL.
1729
1730         Fix regression in testing of admissability of attributes.
1731         * symbol.c (gfc_add_attribute): If the current_attr has non-zero
1732         intent, do not do the check for a dummy being used.
1733         * decl.c (attr_decl1): Add current_attr.intent as the third argument
1734         in the call to gfc_add_attribute.
1735         * gfortran.h: Add the third argument to the prototype for
1736         gfc_add_attribute.
1737
1738 2006-01-21  Joseph S. Myers  <joseph@codesourcery.com>
1739
1740         * gfortranspec.c (lang_specific_driver): Update copyright notice
1741         date.
1742
1743 2006-01-21  Paul Thomas  <pault@gcc.gnu.org>
1744
1745         PR fortran/25124
1746         PR fortran/25625
1747         * decl.c (get_proc_name): If there is an existing
1748         symbol in the encompassing namespace, call errors
1749         if it is a procedure of the same name or the kind
1750         field is set, indicating a type declaration.
1751
1752         PR fortran/20881
1753         PR fortran/23308
1754         PR fortran/25538
1755         PR fortran/25710
1756         * decl.c (add_global_entry): New function to check
1757         for existing global symbol with this name and to
1758         create new one if none exists.
1759         (gfc_match_entry): Call add_global_entry before
1760         matching argument lists for subroutine and function
1761         entries.
1762         * gfortran.h: Prototype for existing function,
1763         global_used.
1764         * resolve.c (resolve_global_procedure): New function
1765         to check global symbols for procedures.
1766         (resolve_call, resolve_function): Calls to this
1767         new function for non-contained and non-module
1768         procedures.
1769         * match.c (match_common): Add check for existing
1770         global symbol, creat one if none exists and emit
1771         error if there is a clash.
1772         * parse.c (global_used): Remove static and use the
1773         gsymbol name rather than the new_block name, so that
1774         the function can be called from resolve.c.
1775         (parse_block_data, parse_module, add_global_procedure):
1776         Improve checks for existing gsymbols.  Emit error if
1777         already defined or if references were to another type.
1778         Set defined flag.
1779
1780         PR fortran/PR24276
1781         * trans-expr.c (gfc_conv_aliased_arg): New function called by 
1782         gfc_conv_function_call that coverts an expression for an aliased
1783         component reference to a derived type array into a temporary array
1784         of the same type as the component.  The temporary is passed as an
1785         actual argument for the procedure call and is copied back to the
1786         derived type after the call.
1787         (is_aliased_array): New function that detects an array reference
1788         that is followed by a component reference.
1789         (gfc_conv_function_call): Detect an aliased actual argument with
1790         is_aliased_array and convert it to a temporary and back again
1791         using gfc_conv_aliased_arg.
1792
1793 2006-01-19  Tobias Schl\81üter  <tobias.schlueter@physik.uni-muenchen.de>
1794
1795         * gfortranspec.c: Update copyright years.
1796         * trans.c: Likewise.
1797         * trans-array.c: Likewise.
1798         * trans-array.h: Likewise.
1799         * trans-decl.c: Likewise.
1800         * trans-stmt.c: Likewise.
1801         * trans-stmt.h: Likewise.
1802         * trans-types.c: Likewise.
1803
1804 2006-01-18  Tobias Schl\81üter  <tobias.schlueter@physik.uni-muenchen.de>
1805
1806         PR fortran/18540
1807         PR fortran/18937
1808         * gfortran.h (BBT_HEADER): Move definition up.
1809         (gfc_st_label): Add BBT_HEADER, remove 'prev' and 'next'.
1810         * io.c (format_asterisk): Adapt initializer.
1811         * resolve.c (resolve_branch): Allow FORTRAN 66 cross-block GOTOs
1812         as extension.
1813         (warn_unused_label): Take gfc_st_label label as argument, adapt to
1814         new data structure.
1815         (gfc_resolve): Adapt call to warn_unused_label.
1816         * symbol.c (compare_st_labels): New function.
1817         (gfc_free_st_label, free_st_labels, gfc_get_st_label): Convert to
1818         using balanced binary tree.
1819         * decl.c (match_char_length, gfc_match_old_kind_spec): Do away
1820         with 'cnt'.
1821         (warn_unused_label): Adapt to binary tree.
1822         * match.c (gfc_match_small_literal_int): Only set cnt if non-NULL.
1823         * primary.c (match_kind_param): Do away with cnt.
1824
1825 2006-01-18  Paul Thomas  <pault@gcc.gnu.org>
1826
1827         PR fortran/20869
1828         PR fortran/20875
1829         PR fortran/25024
1830         * symbol.c (check_conflict): Add pointer valued elemental
1831         functions and internal procedures with the external attribute
1832         to the list of conflicts.
1833         (gfc_add_attribute): New catch-all function to perform the
1834         checking of symbol attributes for attribute declaration
1835         statements.
1836         * decl.c (attr_decl1): Call gfc_add_attribute for each of -
1837         (gfc_match_external, gfc_match_intent, gfc_match_intrinsic,
1838         gfc_match_pointer, gfc_match_dimension, gfc_match_target):
1839         Remove spurious calls to checks in symbol.c.  Set the
1840         attribute directly and use the call to attr_decl() for
1841         checking.
1842         * gfortran.h:  Add prototype for gfc_add_attribute.
1843
1844         PR fortran/25785
1845         * resolve.c (resolve_function): Exclude PRESENT from assumed size
1846         argument checking. Replace strcmp's with comparisons with generic
1847         codes.
1848
1849 2006-01-16  Rafael \81Ávila de Esp\81índola  <rafael.espindola@gmail.com>
1850
1851         * gfortranspec.c (lang_specific_spec_functions): Remove.
1852
1853 2006-01-16  Richard Guenther  <rguenther@suse.de>
1854
1855         * trans-stmt.c (gfc_trans_if_1): Use fold_buildN and build_int_cst.
1856         (gfc_trans_arithmetic_if): Likewise.
1857         (gfc_trans_simple_do): Likewise.
1858         (gfc_trans_do): Likewise.
1859         (gfc_trans_do_while): Likewise.
1860         (gfc_trans_logical_select): Likewise.
1861         (gfc_trans_forall_loop): Likewise.
1862         (generate_loop_for_temp_to_lhs): Likewise.
1863         (generate_loop_for_rhs_to_temp): Likewise.
1864         (gfc_trans_allocate): Likewise.
1865         * trans.c (gfc_add_expr_to_block): Do not fold expr again.
1866
1867 2006-01-16  Richard Guenther  <rguenther@suse.de>
1868
1869         * trans-expr.c (gfc_conv_function_call): Use fold_build2.
1870         * trans-stmt.c (gfc_trans_goto): Likewise.  Use build_int_cst.
1871         * trans.c (gfc_trans_runtime_check): Don't fold the condition
1872         again.
1873
1874 2006-01-13  Steven G. Kargl  <kargls@comcast.net>
1875
1876         PR fortran/25756
1877         * symbol.c (gfc_free_st_label): Give variable meaningful name. Remove
1878         unneeded parenthesis. Fix-up the head of the list (2 lines gleaned
1879         from g95).
1880
1881 2006-01-13  Diego Novillo  <dnovillo@redhat.com>
1882
1883         * trans.c (gfc_add_expr_to_block): Do not fold tcc_statement
1884         nodes.
1885
1886 2006-01-11  Tobias Schl\81üter  <tobias.schlueter@physik.uni-muenchen.de>
1887
1888         * parse.c (next_fixed): Remove superfluous string concatenation.
1889
1890 2006-01-11  Bernhard Fischer  <rep.nop@aon.at>
1891
1892         PR fortran/25486
1893         * scanner.c (load_line): use maxlen to determine the line-length used
1894         for padding lines in fixed form.
1895
1896 2006-01-11  Paul Thomas  <pault@gcc.gnu.org>
1897
1898         PR fortran/25730
1899         * trans-types.c (copy_dt_decls_ifequal): Copy backend decl for
1900         character lengths.
1901
1902 2006-01-09  Andrew Pinski  <pinskia@physics.uc.edu>
1903
1904         fortran/24936
1905         * trans-stmt.c (gfc_trans_pointer_assign_need_temp): Use fold_convert
1906         to avoid type mismatch.
1907
1908 2006-01-09  Andrew Pinski  <pinskia@physics.uc.edu>
1909
1910         PR fortran/21977
1911         * trans-decl.c (gfc_generate_function_code): Move the NULLing of
1912         current_fake_result_decl down to below generate_local_vars.
1913
1914 2006-01-09  Feng Wang  <fengwang@nudt.edu.cn>
1915
1916         PR fortran/12456
1917         * trans-expr.c (gfc_to_single_character): New function that converts
1918         string to single character if its length is 1.
1919         (gfc_build_compare_string):New function that compare string and handle
1920         single character specially.
1921         (gfc_conv_expr_op): Use gfc_build_compare_string.
1922         (gfc_trans_string_copy): Use gfc_to_single_character.
1923         * trans-intrinsic.c (gfc_conv_intrinsic_strcmp): Use
1924         gfc_build_compare_string.
1925         * trans.h (gfc_build_compare_string): Add prototype.
1926
1927 2006-01-09  Feng Wang  <fengwang@nudt.edu.cn>
1928
1929         * simplify.c (gfc_simplify_char): Use UCHAR_MAX instead of literal
1930         constant.
1931         (gfc_simplify_ichar): Get the result from unsinged char and in the
1932         range 0 to UCHAR_MAX instead of CHAR_MIN to CHAR_MAX.
1933
1934 2006-01-08  Erik Edelmann  <eedelman@gcc.gnu.org>
1935
1936         PR fortran/25093
1937         * resolve.c (resolve_fntype): Check that PUBLIC functions
1938         aren't of PRIVATE type.
1939
1940 2006-01-07  Tobias Schl"uter  <tobias.schlueter@physik.uni-muenchen.de>
1941
1942         * decl.c (gfc_match_function_decl): Correctly error out in case of
1943         omitted function argument list.
1944
1945 2006-01-07  Paul Thomas  <pault@gcc.gnu.org>
1946
1947         PR fortran/22146
1948         * trans-array.c (gfc_reverse_ss): Remove static attribute.
1949         (gfc_walk_elemental_function_args): Replace gfc_expr * argument for
1950         the function call with the corresponding gfc_actual_arglist*.  Change
1951         code accordingly.
1952         (gfc_walk_function_expr): Call to gfc_walk_elemental_function_args
1953         now requires the actual argument list instead of the expression for
1954         the function call.
1955         * trans-array.h: Modify the prototype for gfc_walk_elemental_function_args
1956         and provide a prototype for gfc_reverse_ss.
1957         * trans-stmt.h (gfc_trans_call): Add the scalarization code for the case
1958         where an elemental subroutine has array valued actual arguments.
1959
1960         PR fortran/25029
1961         PR fortran/21256
1962         PR fortran/20868
1963         PR fortran/20870
1964         * resolve.c (check_assumed_size_reference): New function to check for upper
1965         bound in assumed size array references.
1966         (resolve_assumed_size_actual): New function to do a very restricted scan
1967         of actual argument expressions of those procedures for which incomplete
1968         assumed size array references are not allowed.
1969         (resolve_function, resolve_call): Switch off assumed size checking of
1970         actual arguments, except for elemental procedures and intrinsic
1971         inquiry functions, in some circumstances.
1972         (resolve_variable): Call check_assumed_size_reference.
1973
1974 2006-01-05  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1975
1976         PR fortran/24268
1977         * io.c (next_char_not_space): New function that returns the next
1978         character that is not white space.
1979         (format_lex): Use the new function to skip whitespace within
1980         a format string.
1981
1982 2006-01-05  Erik Edelmann  <eedelman@gcc.gnu.org>
1983
1984         PR fortran/23675
1985         * expr.c (gfc_expr_set_symbols_referenced): New function.
1986         * gfortran.h: Add a function prototype for it.
1987         * resolve.c (resolve_function): Use it for
1988         use associated character functions lengths.
1989         * expr.c, gfortran.h, resolve.c: Updated copyright years.
1990
1991 2006-01-03  Steven G. Kargl  <kargls@comcast.net>
1992
1993         PR fortran/25101
1994         * resolve.c (resolve_forall_iterators):  Check for scalar variables;
1995         Check stride is nonzero.
1996
1997 2006-01-02  Steven G. Kargl  <kargls@comcast.net>
1998
1999         PR fortran/24640
2000         * parse.c (next_free): Check for whitespace after the label.
2001         * match.c (gfc_match_small_literal_int): Initialize cnt variable.
2002
2003 2006-01-01  Steven G. Kargl  <kargls@comcast.net>
2004
2005         * ChangeLog: Split previous years into ...
2006         * ChangeLog-2002: here.
2007         * ChangeLog-2003: here.
2008         * ChangeLog-2004: here.
2009         * ChangeLog-2005: here.