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