OSDN Git Service

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