OSDN Git Service

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