OSDN Git Service

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