OSDN Git Service

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