OSDN Git Service

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