OSDN Git Service

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