OSDN Git Service

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