OSDN Git Service

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