OSDN Git Service

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