OSDN Git Service

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