OSDN Git Service

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