OSDN Git Service

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