OSDN Git Service

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