OSDN Git Service

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