OSDN Git Service

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