OSDN Git Service

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