OSDN Git Service

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