1 2006-03-03 Roger Sayle <roger@eyesopen.com>
3 * dependency.c (gfc_check_element_vs_element): Consider two
4 unordered scalar subscripts as (potentially) equal.
6 2006-03-03 Roger Sayle <roger@eyesopen.com>
8 * dependency.c (gfc_check_dependency): Call gfc_dep_resolver to
9 check whether two array references have a dependency.
10 (gfc_check_element_vs_element): Assume lref and rref must be
11 REF_ARRAYs. If gfc_dep_compare_expr returns -2, assume these
12 references could potentially overlap.
13 (gfc_dep_resolver): Whitespace and comment tweaks. Assume a
14 dependency if the references have different depths. Rewrite
15 final term to clarrify we only have a dependency for overlaps.
17 2006-03-03 Thomas Koenig <Thomas.Koenig@online.de>
20 * trans-array.h: Adjust gfc_array_allocate prototype.
21 * trans-array.c (gfc_array_allocate): Change type of
22 gfc_array_allocatate to bool. Function returns true if
23 it operates on an array. Change second argument to gfc_expr.
24 Find last reference in chain.
25 If the function operates on an allocatable array, emit call to
26 allocate_array() or allocate64_array().
27 * trans-stmt.c (gfc_trans_allocate): Code to follow to last
28 reference has been moved to gfc_array_allocate.
29 * trans.h: Add declaration for gfor_fndecl_allocate_array and
30 gfor_fndecl_allocate64_array.
31 (gfc_build_builtin_function_decls): Add gfor_fndecl_allocate_array
32 and gfor_fndecl_allocate64_array.
34 2006-03-01 Roger Sayle <roger@eyesopen.com>
36 * trans-stmt.c (generate_loop_for_temp_to_lhs): Add an additional
37 INVERT argument to invert the sense of the WHEREMASK argument.
38 Remove unneeded code to AND together a list of masks.
39 (generate_loop_for_rhs_to_temp): Likewise.
40 (gfc_trans_assign_need_temp): Likewise.
41 (gfc_trans_forall_1): Likewise.
42 (gfc_evaluate_where_mask): Likewise, add a new INVERT argument
43 to specify the sense of the MASK argument.
44 (gfc_trans_where_assign): Likewise.
45 (gfc_trans_where_2): Likewise. Restructure code that decides
46 whether we need to allocate zero, one or two temporary masks.
47 If this is a top-level WHERE (i.e. the incoming MASK is NULL),
48 we only need to allocate at most one temporary mask, and can
49 invert it's sense to provide the complementary pending execution
50 mask. Only calculate the size of the required temporary arrays
52 (gfc_trans_where): Update call to gfc_trans_where_2.
54 2006-03-01 Paul Thomas <pault@gcc.gnu.org>
56 * iresolve.c (gfc_resolve_dot_product): Remove any difference in
57 treatment of logical types.
58 * trans-intrinsic.c (gfc_conv_intrinsic_dot_product): New function.
61 * trans-decl.c (gfc_get_symbol_decl): Extend condition that symbols
62 must be referenced to include unreferenced symbols in an interface
66 * trans-array.c (gfc_conv_resolve_dependencies): Add call to
67 gfc_are_equivalenced_arrays.
68 * symbol.c (gfc_free_equiv_infos, gfc_free_equiv_lists): New
69 functions. (gfc_free_namespace): Call them.
70 * trans-common.c (copy_equiv_list_to_ns): New function.
71 (add_equivalences): Call it.
72 * gfortran.h: Add equiv_lists to gfc_namespace and define
73 gfc_equiv_list and gfc_equiv_info.
74 * dependency.c (gfc_are_equivalenced_arrays): New function.
75 (gfc_check_dependency): Call it.
76 * dependency.h: Prototype for gfc_are_equivalenced_arrays.
78 2006-03-01 Roger Sayle <roger@eyesopen.com>
80 * dependency.c (gfc_is_same_range): Compare the stride, lower and
81 upper bounds when testing array reference ranges for equality.
82 (gfc_check_dependency): Fix indentation whitespace.
83 (gfc_check_element_vs_element): Likewise.
84 (gfc_dep_resolver): Likewise.
86 2006-02-28 Thomas Koenig <Thomas.Koenig@online.de>
88 * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc):
89 If the mask expression exists and has rank 0, enclose the
90 generated loop in an "if (mask)". Put the default
91 initialization into the else branch.
93 2006-02-25 Thomas Koenig <Thomas.Koenig@online.de>
96 * trans-intrinsic.c (gfc_conv_intrinsic_arith): If the
97 mask expression exists and has rank 0, enclose the generated
98 loop in an "if (mask)".
99 * (gfc_conv_intrinsic_minmaxloc): Likewise.
101 2006-02-24 Paul Thomas <pault@gcc.gnu.org>
104 * resolve.c (resolve_contained_functions, resolve_types,
105 gfc_resolve): Revert patch of 2006-02-19.
107 2006-02-24 Paul Thomas <pault@gcc.gnu.org>
110 * dependency.c (gfc_is_same_range): Correct typo.
111 (gfc_check_section_vs_section): Call gfc_is_same_range.
114 * trans-common.c (add_equivalences): Add a new flag that is set when
115 an equivalence is seen that prevents more from being reset until the
116 start of a new traversal of the list, thus ensuring completion of
117 all the equivalences.
119 2006-02-23 Erik Edelmann <eedelman@gcc.gnu.org>
121 * module.c (read_module): Remove redundant code lines.
123 2006-02-20 Rafael
\81Ávila de Esp
\81índola <rafael.espindola@gmail.com>
124 * Make-lang.in (FORTRAN): Remove
125 (.PHONY): Remove F95 and f95. Add fortran
127 2006-02-20 Roger Sayle <roger@eyesopen.com>
129 * trans-stmt.c (gfc_trans_where_2): Avoid updating unused current
130 execution mask for empty WHERE/ELSEWHERE clauses. Don't allocate
131 temporary mask arrays if they won't be used.
133 2006-02-20 Roger Sayle <roger@eyesopen.com>
135 * trans-stmt.c (gfc_trans_where_assign): Remove code to handle
136 traversing a linked list of MASKs. The MASK is now always a
137 single element requiring no ANDing during the assignment.
139 2006-02-19 Thomas Koenig <Thomas.Koenig@online.de>
141 * gfortran.texi: Document environment variables which
142 influence runtime behavior.
144 2006-02-19 H.J. Lu <hongjiu.lu@intel.com>
146 * resolve.c (resolve_contained_functions): Call resolve_entries
148 (resolve_types): Remove calls to resolve_entries and
149 resolve_contained_functions.
150 (gfc_resolve): Call resolve_contained_functions.
152 2006-02-19 Erik Edelmann <eedelman@gcc.gnu.org>
155 * intrinsic.c (gfc_convert_type_warn): Call
156 gfc_intrinsic_symbol() on the newly created symbol.
158 2005-02-19 Paul Thomas <pault@gcc.gnu.org>
161 * resolve.c (is_non_constant_shape_array): New function.
162 (resolve_fl_variable): Remove code for the new function and call it.
163 (resolve_fl_namelist): New function. Add test for namelist array
164 with non-constant shape, using is_non_constant_shape_array.
165 (resolve_symbol): Remove code for resolve_fl_namelist and call it.
168 * match.c (match_namelist): Increment the refs field of an accepted
169 namelist object symbol.
170 * resolve.c (resolve_fl_namelist): Test namelist objects for a conflict
171 with contained or module procedures.
173 2006-02-18 Roger Sayle <roger@eyesopen.com>
175 * trans-stmt.c (struct temporary_list): Delete.
176 (gfc_trans_where_2): Major reorganization. Remove no longer needed
177 TEMP argument. Allocate and deallocate the control mask and
178 pending control mask locally.
179 (gfc_trans_forall_1): Delete TEMP local variable, and update
180 call to gfc_trans_where_2. No need to deallocate arrays after.
181 (gfc_evaluate_where_mask): Major reorganization. Change return
182 type to void. Pass in parent execution mask, MASK, and two
183 already allocated mask arrays CMASK and PMASK. On return
184 CMASK := MASK & COND, PMASK := MASK & !COND. MASK, CMASK and
185 CMASK may all be NULL, or refer to the same temporary arrays.
186 (gfc_trans_where): Update call to gfc_trans_where_2. We no
187 longer need a TEMP variable or to deallocate temporary arrays
188 allocated by gfc_trans_where_2.
190 2006-02-18 Danny Smith <dannysmith@users.sourceforeg.net>
192 * gfortran.h (gfc_add_attribute): Change uint to unsigned int.
193 * symbol.c (gfc_add_attribute): Likewise for definition.
194 * resolve.c (resolve_global_procedure): Likewise for variable 'type'.
196 2006-02-17 Richard Sandiford <richard@codesourcery.com>
198 * trans-common.c: Include rtl.h earlier.
199 * trans-decl.c: Likewise.
201 2006-02-16 Jakub Jelinek <jakub@redhat.com>
204 * parse.c (parse_omp_do, parse_omp_structured_block): Call
205 gfc_commit_symbols and gfc_warning_check.
207 * openmp.c (resolve_omp_clauses): Add a dummy case label to workaround
210 2005-02-16 Paul Thomas <pault@gcc.gnu.org>
213 * trans-expr.c (gfc_add_interface_mapping): Use the actual argument
214 for character(*) arrays, rather than casting to the type and kind
215 parameters of the formal argument.
217 2006-02-15 Toon Moene <toon@moene.indiv.nluug.nl>
220 * options.c: Do not warn for Fortran 2003 features by default.
222 2006-02-15 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
224 * check.c: Update copyright years.
226 * check.c (gfc_check_minloc_maxloc, check_reduction): Don't call
227 dim_range_check on not-present optional dim argument.
229 2006-02-15 Jakub Jelinek <jakub@redhat.com>
233 * Make-lang.in (install-finclude-dir): New goal.
234 (fortran.install-common): Depend on install-finclude-dir.
235 * lang-specs.h: If not -nostdinc, add -I finclude.
237 2006-02-14 Thomas Koenig <Thomas.Koenig@online.de>
240 * check.c (dim_check): Perform all checks if dim is optional.
241 (gfc_check_minloc_maxloc): Use dim_check and dim_rank_check
242 to check dim argument.
243 (check_reduction): Likewise.
245 2006-02-14 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
248 * io.c (match_ltag): Mark label as referenced.
250 2006-02-14 Jakub Jelinek <jakub@redhat.com>
251 Richard Henderson <rth@redhat.com>
252 Diego Novillo <dnovillo@redhat.com>
254 * invoke.texi: Document -fopenmp.
255 * gfortran.texi (Extensions): Document OpenMP.
257 Backport from gomp-20050608-branch
258 * trans-openmp.c: Call build_omp_clause instead of
259 make_node when creating OMP_CLAUSE_* trees.
260 (gfc_trans_omp_reduction_list): Remove argument 'code'.
263 * trans.h (build4_v): Define.
264 * trans-openmp.c: Call build4_v to create OMP_PARALLEL nodes.
265 Call build3_v to create OMP_SECTIONS nodes.
268 * openmp.c (gfc_match_omp_variable_list): Call gfc_set_sym_referenced
269 on all symbols added to the variable list.
271 * openmp.c (gfc_match_omp_clauses): Fix check for non-INTRINSIC
272 procedure symbol in REDUCTION.
274 * trans-openmp.c (gfc_trans_omp_array_reduction): Use gfc_add
275 for MINUS_EXPR OMP_CLAUSE_REDUCTION_CODE.
277 * trans-openmp.c (gfc_trans_omp_do): Add PBLOCK argument. If PBLOCK
278 is non-NULL, evaluate INIT/COND/INCR and chunk size expressions in
279 that statement block.
280 (gfc_trans_omp_parallel_do): Pass non-NULL PBLOCK to gfc_trans_omp_do
281 for non-ordered non-static combined loops.
282 (gfc_trans_omp_directive): Pass NULL PBLOCK to gfc_trans_omp_do.
284 * openmp.c: Include target.h and toplev.h.
285 (gfc_match_omp_threadprivate): Emit diagnostic if target does
287 * Make-lang.in (fortran/openmp.o): Add dependencies on
288 target.h and toplev.h.
290 * trans-decl.c (gfc_get_fake_result_decl): Set GFC_DECL_RESULT.
291 * trans-openmp.c (gfc_omp_privatize_by_reference): Make
292 DECL_ARTIFICIAL vars predetermined shared except GFC_DECL_RESULT.
293 (gfc_omp_disregard_value_expr): Handle GFC_DECL_RESULT.
294 (gfc_trans_omp_variable): New function.
295 (gfc_trans_omp_variable_list, gfc_trans_omp_reduction_list): Use it.
296 * trans.h (GFC_DECL_RESULT): Define.
298 * trans-openmp.c (gfc_omp_firstprivatize_type_sizes): New function.
299 * f95-lang.c (LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES): Define.
300 * trans.h (gfc_omp_firstprivatize_type_sizes): New prototype.
302 * trans-openmp.c (gfc_omp_privatize_by_reference): Return
303 true if a pointer has GFC_DECL_SAVED_DESCRIPTOR set.
304 (gfc_trans_omp_array_reduction, gfc_trans_omp_reduction_list): New
306 (gfc_trans_omp_clauses): Add WHERE argument. Call
307 gfc_trans_omp_reduction_list rather than gfc_trans_omp_variable_list
309 (gfc_trans_omp_do, gfc_trans_omp_parallel, gfc_trans_omp_parallel_do,
310 gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare,
311 gfc_trans_omp_sections, gfc_trans_omp_single): Adjust
312 gfc_trans_omp_clauses callers.
314 * openmp.c (omp_current_do_code): New var.
315 (gfc_resolve_omp_do_blocks): New function.
316 (gfc_resolve_omp_parallel_blocks): Call it.
317 (gfc_resolve_do_iterator): Add CODE argument. Don't propagate
318 predetermination if argument is !$omp do or !$omp parallel do
320 * resolve.c (resolve_code): Call gfc_resolve_omp_do_blocks
321 for EXEC_OMP_DO. Adjust gfc_resolve_do_iterator caller.
322 * fortran.h (gfc_resolve_omp_do_blocks): New prototype.
323 (gfc_resolve_do_iterator): Add CODE argument.
325 * trans.h (gfc_omp_predetermined_sharing,
326 gfc_omp_disregard_value_expr, gfc_omp_private_debug_clause): New
328 (GFC_DECL_COMMON_OR_EQUIV, GFC_DECL_CRAY_POINTEE): Define.
329 * trans-openmp.c (gfc_omp_predetermined_sharing,
330 gfc_omp_disregard_value_expr, gfc_omp_private_debug_clause): New
332 * trans-common.c (build_equiv_decl, build_common_decl,
333 create_common): Set GFC_DECL_COMMON_OR_EQUIV flag on the decls.
334 * trans-decl.c (gfc_finish_cray_pointee): Set GFC_DECL_CRAY_POINTEE
336 * f95-lang.c (LANG_HOOKS_OMP_PREDETERMINED_SHARING,
337 LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR,
338 LANG_HOOKS_OMP_PRIVATE_DEBUG_CLAUSE): Define.
340 * openmp.c (resolve_omp_clauses): Remove extraneous comma.
342 * symbol.c (check_conflict): Add conflict between cray_pointee and
344 * openmp.c (gfc_match_omp_threadprivate): Fail if
345 gfc_add_threadprivate returned FAILURE.
346 (resolve_omp_clauses): Diagnose Cray pointees in SHARED,
347 {,FIRST,LAST}PRIVATE and REDUCTION clauses and Cray pointers in
348 {FIRST,LAST}PRIVATE and REDUCTION clauses.
350 * resolve.c (omp_workshare_flag): New variable.
351 (resolve_function): Diagnose use of non-ELEMENTAL user defined
352 function in WORKSHARE construct.
353 (resolve_code): Cleanup forall_save use. Make sure omp_workshare_flag
354 is set to correct value in different contexts.
356 * openmp.c (resolve_omp_clauses): Replace %s with '%s' when printing
358 (resolve_omp_atomic): Likewise.
361 * scanner.c (skip_free_comments): Set at_bol at the beginning of the
363 (skip_fixed_comments): Handle ! comments in the middle of line here
365 (gfc_skip_comments): Use skip_fixed_comments for FIXED_FORM even if
367 (gfc_next_char_literal): Fix expected canonicalized *$omp string.
369 * trans-openmp.c (gfc_trans_omp_do): Use make_node and explicit
370 initialization to build OMP_FOR instead of build.
372 * trans-decl.c (gfc_gimplify_function): Invoke
373 diagnose_omp_structured_block_errors.
375 * trans-openmp.c (gfc_trans_omp_master): Use OMP_MASTER.
376 (gfc_trans_omp_ordered): Use OMP_ORDERED.
378 * gfortran.h (gfc_resolve_do_iterator, gfc_resolve_blocks,
379 gfc_resolve_omp_parallel_blocks): New prototypes.
380 * resolve.c (resolve_blocks): Renamed to...
381 (gfc_resolve_blocks): ... this. Remove static.
382 (gfc_resolve_forall): Adjust caller.
383 (resolve_code): Only call gfc_resolve_blocks if code->block != 0
384 and not for EXEC_OMP_PARALLEL* directives. Call
385 gfc_resolve_omp_parallel_blocks for EXEC_OMP_PARALLEL* directives.
386 Call gfc_resolve_do_iterator if resolved successfully EXEC_DO
388 * openmp.c: Include pointer-set.h.
389 (omp_current_ctx): New variable.
390 (gfc_resolve_omp_parallel_blocks, gfc_resolve_do_iterator): New
392 * Make-lang.in (fortran/openmp.o): Depend on pointer-set.h.
394 * openmp.c (gfc_match_omp_clauses): For max/min/iand/ior/ieor,
395 look up symbol if it exists, use its name instead and, if it is not
396 INTRINSIC, issue diagnostics.
398 * parse.c (parse_omp_do): Handle implied end do properly.
399 (parse_executable): If parse_omp_do returned ST_IMPLIED_ENDDO,
400 return it instead of continuing.
402 * trans-openmp.c (gfc_trans_omp_critical): Update for changed
404 (gfc_trans_omp_do, gfc_trans_omp_parallel, gfc_trans_omp_parallel_do,
405 gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare,
406 gfc_trans_omp_sections, gfc_trans_omp_single): Likewise.
408 * trans.h (gfc_omp_privatize_by_reference): New prototype.
409 * f95-lang.c (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Redefine
410 to gfc_omp_privatize_by_reference.
411 * trans-openmp.c (gfc_omp_privatize_by_reference): New function.
413 * trans-stmt.h (gfc_trans_omp_directive): Add comment.
415 * openmp.c (gfc_match_omp_variable_list): Add ALLOW_COMMON argument.
416 Disallow COMMON matching if it is set.
417 (gfc_match_omp_clauses, gfc_match_omp_flush): Adjust all callers.
418 (resolve_omp_clauses): Show locus in error messages. Check that
419 variable types in reduction clauses are appropriate for reduction
422 * resolve.c (resolve_symbol): Don't error if a threadprivate module
423 variable isn't SAVEd.
425 * trans-openmp.c (gfc_trans_omp_do): Put count into BLOCK, not BODY.
426 Fix typo in condition. Fix DOVAR initialization.
428 * openmp.c (gfc_match_omp_clauses): Match min/iand/ior/ieor
429 rather than .min. etc.
431 * trans-openmpc.c (omp_not_yet): Remove.
432 (gfc_trans_omp_parallel_do): Keep listprivate clause on parallel.
433 Force creation of BIND_EXPR around the workshare construct.
434 (gfc_trans_omp_parallel_sections): Likewise.
435 (gfc_trans_omp_parallel_workshare): Likewise.
437 * types.def (BT_I16, BT_FN_I16_VPTR_I16,
438 BT_FN_BOOL_VPTR_I16_I16, BT_FN_I16_VPTR_I16_I16): Add.
440 * trans-openmp.c (gfc_trans_omp_clauses): Create OMP_CLAUSE_DEFAULT.
441 (gfc_trans_omp_code): New function.
442 (gfc_trans_omp_do): Use it, remove omp_not_yet uses.
443 (gfc_trans_omp_parallel, gfc_trans_omp_single): Likewise.
444 (gfc_trans_omp_sections): Likewise. Only treat empty last section
445 specially if lastprivate clause is present.
446 * f95-lang.c (gfc_init_builtin_functions): Create BUILT_IN_TRAP
449 * trans-openmp.c (gfc_trans_omp_variable_list): Update for
450 OMP_CLAUSE_DECL name change.
451 (gfc_trans_omp_do): Likewise.
453 * trans-openmp.c (gfc_trans_omp_clauses): Create OMP_CLAUSE_REDUCTION
455 (gfc_trans_omp_atomic): Build OMP_ATOMIC instead of expanding
456 sync builtins directly.
457 (gfc_trans_omp_single): Build OMP_SINGLE statement.
459 * trans-openmp.c (gfc_trans_add_clause): New.
460 (gfc_trans_omp_variable_list): Take a tree code and build the clause
461 node here. Link it to the head of a list.
462 (gfc_trans_omp_clauses): Update to match.
463 (gfc_trans_omp_do): Use gfc_trans_add_clause.
465 * trans-openmp.c (gfc_trans_omp_clauses): Change second argument to
466 gfc_omp_clauses *. Use gfc_evaluate_now instead of creating
468 (gfc_trans_omp_atomic, gfc_trans_omp_critical): Use buildN_v macros.
469 (gfc_trans_omp_do): New function.
470 (gfc_trans_omp_master): Dont' check for gfc_trans_code returning NULL.
471 (gfc_trans_omp_parallel): Adjust gfc_trans_omp_clauses caller.
473 (gfc_trans_omp_parallel_do, gfc_trans_omp_parallel_sections,
474 gfc_trans_omp_parallel_workshare, gfc_trans_omp_sections,
475 gfc_trans_omp_single, gfc_trans_omp_workshare): New functions.
476 (gfc_trans_omp_directive): Use them.
477 * parse.c (parse_omp_do): Allow new_st.op == EXEC_NOP.
478 * openmp.c (resolve_omp_clauses): Check for list items present
480 (resolve_omp_do): Check that iteration variable is not THREADPRIVATE
481 and is not present in any clause variable lists other than PRIVATE
484 * gfortran.h (symbol_attribute): Add threadprivate bit.
485 (gfc_common_head): Add threadprivate member, change use_assoc
486 and saved into char to save space.
487 (gfc_add_threadprivate): New prototype.
488 * symbol.c (check_conflict): Handle threadprivate.
489 (gfc_add_threadprivate): New function.
490 (gfc_copy_attr): Copy threadprivate.
491 * trans-openmp.c (gfc_trans_omp_clauses): Avoid creating a temporary
492 if IF or NUM_THREADS is constant. Create OMP_CLAUSE_SCHEDULE and
494 * resolve.c (resolve_symbol): Complain if a THREADPRIVATE symbol
495 outside a module and not in COMMON has is not SAVEd.
496 (resolve_equivalence): Ensure THREADPRIVATE objects don't get
498 * trans-common.c: Include target.h and rtl.h.
499 (build_common_decl): Set DECL_TLS_MODEL if THREADPRIVATE.
500 * trans-decl.c: Include rtl.h.
501 (gfc_finish_var_decl): Set DECL_TLS_MODEL if THREADPRIVATE.
502 * dump-parse-tree.c (gfc_show_attr): Handle THREADPRIVATE.
503 * Make-lang.in (fortran/trans-decl.o): Depend on $(RTL_H).
504 (fortran/trans-common.o): Depend on $(RTL_H) and $(TARGET_H).
505 * openmp.c (gfc_match_omp_variable_list): Ensure COMMON block
506 is from current namespace.
507 (gfc_match_omp_threadprivate): Rewrite.
508 (resolve_omp_clauses): Check some clause restrictions.
509 * module.c (ab_attribute): Add AB_THREADPRIVATE.
510 (attr_bits): Add THREADPRIVATE.
511 (mio_symbol_attribute, mio_symbol_attribute): Handle threadprivate.
512 (load_commons, write_common, write_blank_common): Adjust for type
513 change of saved, store/load threadprivate bit from the integer
516 * types.def (BT_FN_UINT_UINT): New.
517 (BT_FN_VOID_UINT_UINT): Remove.
519 * trans-openmp.c (gfc_trans_omp_clauses, gfc_trans_omp_barrier,
520 gfc_trans_omp_critical, gfc_trans_omp_flush, gfc_trans_omp_master,
521 gfc_trans_omp_ordered, gfc_trans_omp_parallel): New functions.
522 (gfc_trans_omp_directive): Use them.
524 * openmp.c (expr_references_sym): Add SE argument, don't look
526 (is_conversion): New function.
527 (resolve_omp_atomic): Adjust expr_references_sym callers. Handle
528 promoted expressions.
529 * trans-openmp.c (gfc_trans_omp_atomic): New function.
530 (gfc_trans_omp_directive): Call it.
532 * f95-lang.c (builtin_type_for_size): New function.
533 (gfc_init_builtin_functions): Initialize synchronization and
535 * types.def: New file.
536 * Make-lang.in (f95-lang.o): Depend on $(BUILTINS_DEF) and
539 * trans-openmp.c: Rename GOMP_* tree codes into OMP_*.
541 * dump-parse-tree.c (show_symtree): Don't crash if ns->proc_name
544 * dump-parse-tree.c (gfc_show_namelist, gfc_show_omp_node): New
546 (gfc_show_code_node): Call gfc_show_omp_node for EXEC_OMP_* nodes.
548 * parse.c (parse_omp_do): Call pop_state before next_statement.
549 * openmp.c (expr_references_sym, resolve_omp_atomic, resolve_omp_do):
551 (gfc_resolve_omp_directive): Call them.
552 * match.c (match_exit_cycle): Issue error if EXIT or CYCLE statement
553 leaves an OpenMP structured block or if EXIT terminates !$omp do
556 * Make-lang.in (F95_PARSER_OBJS): Add fortran/openmp.o.
557 (F95_OBJS): Add fortran/trans-openmp.o.
558 (fortran/trans-openmp.o): Depend on $(GFORTRAN_TRANS_DEPS).
559 * lang.opt: Add -fopenmp option.
560 * options.c (gfc_init_options): Initialize it.
561 (gfc_handle_option): Handle it.
562 * gfortran.h (ST_OMP_ATOMIC, ST_OMP_BARRIER, ST_OMP_CRITICAL,
563 ST_OMP_END_CRITICAL, ST_OMP_END_DO, ST_OMP_END_MASTER,
564 ST_OMP_END_ORDERED, ST_OMP_END_PARALLEL, ST_OMP_END_PARALLEL_DO,
565 ST_OMP_END_PARALLEL_SECTIONS, ST_OMP_END_PARALLEL_WORKSHARE,
566 ST_OMP_END_SECTIONS, ST_OMP_END_SINGLE, ST_OMP_END_WORKSHARE,
567 ST_OMP_DO, ST_OMP_FLUSH, ST_OMP_MASTER, ST_OMP_ORDERED,
568 ST_OMP_PARALLEL, ST_OMP_PARALLEL_DO, ST_OMP_PARALLEL_SECTIONS,
569 ST_OMP_PARALLEL_WORKSHARE, ST_OMP_SECTIONS, ST_OMP_SECTION,
570 ST_OMP_SINGLE, ST_OMP_THREADPRIVATE, ST_OMP_WORKSHARE): New
572 (OMP_LIST_PRIVATE, OMP_LIST_FIRSTPRIVATE, OMP_LIST_LASTPRIVATE,
573 OMP_LIST_COPYPRIVATE, OMP_LIST_SHARED, OMP_LIST_COPYIN,
574 OMP_LIST_PLUS, OMP_LIST_REDUCTION_FIRST, OMP_LIST_MULT,
575 OMP_LIST_SUB, OMP_LIST_AND, OMP_LIST_OR, OMP_LIST_EQV,
576 OMP_LIST_NEQV, OMP_LIST_MAX, OMP_LIST_MIN, OMP_LIST_IAND,
577 OMP_LIST_IOR, OMP_LIST_IEOR, OMP_LIST_REDUCTION_LAST, OMP_LIST_NUM):
578 New OpenMP variable list types.
579 (gfc_omp_clauses): New typedef.
580 (gfc_get_omp_clauses): Define.
581 (EXEC_OMP_CRITICAL, EXEC_OMP_DO, EXEC_OMP_FLUSH, EXEC_OMP_MASTER,
582 EXEC_OMP_ORDERED, EXEC_OMP_PARALLEL, EXEC_OMP_PARALLEL_DO,
583 EXEC_OMP_PARALLEL_SECTIONS, EXEC_OMP_PARALLEL_WORKSHARE,
584 EXEC_OMP_SECTIONS, EXEC_OMP_SINGLE, EXEC_OMP_WORKSHARE,
585 EXEC_OMP_ATOMIC, EXEC_OMP_BARRIER, EXEC_OMP_END_NOWAIT,
586 EXEC_OMP_END_SINGLE): New OpenMP gfc_exec_op codes.
587 (struct gfc_code): Add omp_clauses, omp_name, omp_namelist
588 and omp_bool fields to ext union.
589 (flag_openmp): Declare.
590 (gfc_free_omp_clauses, gfc_resolve_omp_directive): New prototypes.
591 * scanner.c (openmp_flag, openmp_locus): New variables.
592 (skip_free_comments, skip_fixed_comments, gfc_next_char_literal):
593 Handle OpenMP directive lines and conditional compilation magic
595 * parse.h (COMP_OMP_STRUCTURED_BLOCK): New compile state.
596 * parse.c (decode_omp_directive, parse_omp_do, parse_omp_atomic,
597 parse_omp_structured_block): New functions.
598 (next_free, next_fixed): Parse OpenMP directives.
599 (case_executable, case_exec_markers, case_decl): Add ST_OMP_*
601 (gfc_ascii_statement): Handle ST_OMP_* codes.
602 (parse_executable): Rearrange the loop slightly, so that
603 parse_omp_do can return next_statement.
604 * match.h (gfc_match_omp_eos, gfc_match_omp_atomic,
605 gfc_match_omp_barrier, gfc_match_omp_critical, gfc_match_omp_do,
606 gfc_match_omp_flush, gfc_match_omp_master, gfc_match_omp_ordered,
607 gfc_match_omp_parallel, gfc_match_omp_parallel_do,
608 gfc_match_omp_parallel_sections, gfc_match_omp_parallel_workshare,
609 gfc_match_omp_sections, gfc_match_omp_single,
610 gfc_match_omp_threadprivate, gfc_match_omp_workshare,
611 gfc_match_omp_end_nowait, gfc_match_omp_end_single): New prototypes.
612 * resolve.c (resolve_blocks): Ignore EXEC_OMP_* block directives.
613 (resolve_code): Call gfc_resolve_omp_directive on EXEC_OMP_*
615 * trans.c (gfc_trans_code): Call gfc_trans_omp_directive for
616 EXEC_OMP_* directives.
617 * st.c (gfc_free_statement): Handle EXEC_OMP_* statement freeing.
618 * trans-stmt.h (gfc_trans_omp_directive): New prototype.
619 * openmp.c: New file.
620 * trans-openmp.c: New file.
622 2006-02-13 Andrew Pinski <pinskia@physics.uc.edu>
623 Jakub Jelinek <jakub@redhat.com>
626 * trans-decl.c (gfc_get_symbol_decl, gfc_get_fake_result_decl): Use
627 gfc_add_decl_to_function rather than gfc_finish_var_decl on length.
629 2006-02-13 Paul Thomas <pault@gcc.gnu.org>
633 * resolve.c (resolve_symbol): Extend the requirement that module
634 arrays have constant bounds to those in the main program. At the
635 same time simplify the array bounds, to avoiding trapping parameter
636 array references, and exclude automatic character length from main
637 and modules. Rearrange resolve_symbol and resolve_derived to put as
638 each flavor together, as much as is possible and move all specific
639 code for flavors FL_VARIABLE, FL_PROCEDURE and FL_PARAMETER into new
641 (resolve_fl_var_and_proc, resolve_fl_variable, resolve_fl_procedure):
642 New functions to do work of resolve_symbol.
643 (resolve_index_expr): New function that is called from resolved_symbol
644 and is extracted from resolve_charlen.
645 (resolve_charlen): Call this new function.
646 (resolve_fl_derived): Renamed resolve_derived to be consistent with
647 the naming of the new functions for the other flavours. Change the
648 charlen checking so that the style is consistent with other similar
649 checks. Add the generation of the gfc_dt_list, removed from resolve_
653 * resolve.c (resolve_actual_arglist): Prevent internal procedures
654 from being dummy arguments.
657 * resolve.c (resolve_actual_arglist): Prevent pure but non-intrinsic
658 procedures from being dummy arguments.
661 * resolve.c (check_data_variable): Add test that data variable is in
665 * resolve.c (resolve_call): Add test that the subroutine does not
668 2006-02-12 Erik Edelmann <eedelman@gcc.gnu.org>
671 * trans-array.c (gfc_trans_allocate_array_storage): New argument
672 dealloc; free the temporary only if dealloc is true.
673 (gfc_trans_allocate_temp_array): New argument bool dealloc, to be
674 passed onwards to gfc_trans_allocate_array_storage.
675 (gfc_trans_array_constructor, gfc_conv_loop_setup): Update call to
676 gfc_trans_allocate_temp_array.
677 * trans-array.h (gfc_trans_allocate_temp_array): Update function
679 * trans-expr.c (gfc_conv_function_call): Set new argument 'dealloc'
680 to gfc_trans_allocate_temp_array to false in case of functions
682 (gfc_trans_arrayfunc_assign): Return NULL for functions returning
685 2006-02-10 Steven G. Kargl <kargls@comcast.net>
688 *decl.c (variable_decl): Improve error message. Remove initialization
689 typespec. Wrap long line.
690 *expr.c (gfc_check_pointer_assign): Permit checking of type, kind type,
692 *simplify.c (gfc_simplify_null): Ensure type, kind type, and rank
696 2006-02-10 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
699 * arith.c (eval_intrinsic): Accept INTRINSIC_PARENTHESES.
700 * expr.c (check_intrinsic_op): Likewise.
701 * module.c (mio_expr): Likewise.
703 2006-02-09 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
705 * dump-parse-tree.c: Update copyright years.
706 * matchexp.c: Likewise.
707 * module.c: Likewise.
710 * gfortran.h (gfc_intrinsic_op): Add INTRINSIC_PARENTHESES.
711 * dump-parse-tree (gfc_show_expr): Handle INTRINSIC_PARENTHESES.
712 * expr.c (simplify_intrinsic_op): Treat INTRINSIC_PARENTHESES as
713 if it were INTRINSIC_UPLUS.
714 * resolve.c (resolve_operator): Handle INTRINSIC_PARENTHESES.
715 * match.c (intrinsic_operators): Add INTRINSIC_PARENTHESES.
716 * matchexp.c (match_primary): Record parentheses surrounding
718 * module.c (intrinsics): Add INTRINSIC_PARENTHESES for module
720 * trans-expr.c (gfc_conv_expr_op): Handle INTRINSIC_PARENTHESES.
722 2006-02-09 Paul Thomas <pault@gcc.gnu.org>
725 * trans-stmt.c (gfc_trans_allocate): Provide assumed character length
726 scalar with missing backend_decl for the hidden dummy charlen.
729 * interface.c (gfc_extend_assign): Remove detection of non-PURE
730 subroutine in assignment interface, with gfc_error, and put it in
731 * resolve.c (resolve_code).
734 * interface.c (gfc_procedure_use): Flag rank checking for non-
735 elemental, contained or interface procedures in call to
736 (compare_actual_formal), where ranks are checked for assumed
739 2006-02-08 Francois-Xavier Coudert <coudert@clipper.ens.fr>
742 * trans-decl.c (gfc_generate_function_code): Add new argument,
743 pedantic, to set_std call.
745 2005-02-06 Thomas Koenig <Thomas.Koenig@online.de>
748 * gfortran.texi: Document the GFORTRAN_CONVERT_UNIT environment
750 * invoke.texi: Mention the "Runtime" chapter.
751 Document the -fconvert= option.
752 * gfortran.h: Add options_convert.
753 * lang.opt: Add fconvert=little-endian, fconvert=big-endian,
754 fconvert=native and fconvert=swap.
755 * trans-decl.c (top level): Add gfor_fndecl_set_convert.
756 (gfc_build_builtin_function_decls): Set gfor_fndecl_set_convert.
757 (gfc_generate_function_code): If -fconvert was specified,
758 and this is the main program, add a call to set_convert().
759 * options.c: Handle the -fconvert options.
761 2006-02-06 Roger Sayle <roger@eyesopen.com>
763 * trans-stmt.c (gfc_evaluate_where_mask): Allow the NMASK argument
764 to be NULL to indicate that the not mask isn't required.
765 (gfc_trans_where_2): Remove PMASK argument. Avoid calculating the
766 pending mask for the last clause of a WHERE chain. Update recursive
768 (gfc_trans_forall_1): Update call to gfc_trans_where_2.
769 (gfc_trans_where): Likewise.
771 2006-02-06 Jakub Jelinek <jakub@redhat.com>
773 Backport from gomp-20050608-branch
774 * trans-decl.c (create_function_arglist): Handle dummy functions.
776 * trans-decl.c (gfc_get_symbol_decl): Revert explicit setting of
778 (gfc_trans_vla_type_sizes): Also "gimplify"
779 GFC_TYPE_ARRAY_DATAPTR_TYPE for GFC_DESCRIPTOR_TYPE_P types.
780 * trans-array.c (gfc_trans_deferred_array): Call
781 gfc_trans_vla_type_sizes.
783 * trans-decl.c (saved_function_decls, saved_parent_function_decls):
784 Remove unnecessary initialization.
785 (create_function_arglist): Make sure __result has complete type.
786 (gfc_get_fake_result_decl): Change current_fake_result_decl into
787 a tree chain. For entry master, create a separate variable
788 for each result name. For BT_CHARACTER results, call
789 gfc_finish_var_decl on length even if it has been already created,
791 (gfc_trans_vla_type_sizes): For function/entry result, adjust
792 result value type, not the FUNCTION_TYPE.
793 (gfc_generate_function_code): Adjust for current_fake_result_decl
795 (gfc_trans_deferred_vars): Likewise. Call gfc_trans_vla_type_sizes
796 even on result if it is assumed-length character.
798 * trans-decl.c (gfc_trans_dummy_character): Add SYM argument.
799 Call gfc_trans_vla_type_sizes.
800 (gfc_trans_auto_character_variable): Call gfc_trans_vla_type_sizes.
801 (gfc_trans_vla_one_sizepos, gfc_trans_vla_type_sizes_1,
802 gfc_trans_vla_type_sizes): New functions.
803 (gfc_trans_deferred_vars): Adjust gfc_trans_dummy_character
804 callers. Call gfc_trans_vla_type_sizes on assumed-length
805 character parameters.
806 * trans-array.c (gfc_trans_array_bounds,
807 gfc_trans_auto_array_allocation, gfc_trans_dummy_array_bias): Call
808 gfc_trans_vla_type_sizes.
809 * trans.h (gfc_trans_vla_type_sizes): New prototype.
811 * trans-decl.c (gfc_build_qualified_array): For non-assumed-size
812 arrays without constant size, create also an index var for
813 GFC_TYPE_ARRAY_SIZE (type). If the type is incomplete, complete
815 (gfc_create_string_length): Don't call gfc_defer_symbol_init
816 if just creating DECL_ARGUMENTS.
817 (gfc_get_symbol_decl): Call gfc_finish_var_decl and
818 gfc_defer_symbol_init even if ts.cl->backend_decl is already
819 set to a VAR_DECL that doesn't have DECL_CONTEXT yet.
820 (create_function_arglist): Rework, so that hidden length
821 arguments for CHARACTER parameters are created together with
822 the parameters. Resolve ts.cl->backend_decl for CHARACTER
823 parameters. If the argument is a non-constant length array
824 or CHARACTER, ensure PARM_DECL has different type than
826 (generate_local_decl): Call gfc_get_symbol_decl even
827 for non-referenced non-constant length CHARACTER parameters
828 after optionally issuing warnings.
829 * trans-array.c (gfc_trans_array_bounds): Set last stride
830 to GFC_TYPE_ARRAY_SIZE (type) to initialize it as well.
831 (gfc_trans_dummy_array_bias): Initialize GFC_TYPE_ARRAY_SIZE (type)
834 * trans-expr.c (gfc_conv_expr_val): Fix comment typo.
836 * trans-stmt.c (gfc_trans_simple_do): Fix comment.
838 2006-02-04 Roger Sayle <roger@eyesopen.com>
840 * dependency.c (gfc_check_dependency): Remove unused vars and nvars
841 arguments. Replace with an "identical" argument. A full array
842 reference to the same symbol is a dependency if identical is true.
843 * dependency.h (gfc_check_dependency): Update prototype.
844 * trans-array.h (gfc_check_dependency): Delete duplicate prototype.
845 * trans-stmt.c: #include dependency.h for gfc_check_dependency.
846 (gfc_trans_forall_1): Update calls to gfc_check_dependency.
847 (gfc_trans_where_2): Likewise. Remove unneeded variables.
848 (gfc_trans_where_3): New function for simple non-dependent WHEREs.
849 (gfc_trans_where): Call gfc_trans_where_3 to translate simple
850 F90-style WHERE statements without internal dependencies.
851 * Make-lang.in (trans-stmt.o): Depend upon dependency.h.
853 2006-02-05 H.J. Lu <hongjiu.lu@intel.com>
857 * resolve.c (resolve_types): New function.
858 (resolve_codes): Likewise.
859 (gfc_resolve): Use them.
861 2006-02-05 Roger Sayle <roger@eyesopen.com>
863 * trans-stmt.c (gfc_evaluate_where_mask): Use LOGICAL*1 for WHERE
864 masks instead of LOGICAL*4.
866 2006-02-05 Jakub Jelinek <jakub@redhat.com>
868 * resolve.c (resolve_symbol): Initialize constructor_expr to NULL.
870 2006-02-04 Thomas Koenig <Thomas.Koenig@online.de>
873 check.c (identical_dimen_shape): New function.
874 (check_dot_product): Use identical_dimen_shape() to check sizes
876 (gfc_check_matmul): Likewise.
877 (gfc_check_merge): Check conformance between tsource and fsource
878 and between tsource and mask.
879 (gfc_check_pack): Check conformance between array and mask.
881 2006-02-03 Steven G. Kargl <kargls@comcast>
882 Paul Thomas <pault@gcc.gnu.org>
885 * resolve.c (resolve_symbol): Default initialization of derived type
886 component reguires the SAVE attribute.
888 2006-02-02 Steven G. Kargl <kargls@comcast>
891 match.c (gfc_match_nullify): Free the list from head not tail.
894 * match.c (match_forall_header): Fix internal error caused by bogus
898 2006-01-31 Thomas Koenig <Thomas.Koenig@online.de>
901 expr.c (gfc_check_conformance): Reorder error message
903 check.c(gfc_check_minloc_maxloc): Call gfc_check_conformance
904 for checking arguments array and mask.
905 (check_reduction): Likewise.
907 2005-01-30 Erik Edelmann <eedelman@gcc.gnu.org>
910 * trans-io.c (set_internal_unit): Check the rank of the
911 expression node itself instead of its symbol.
913 2006-01-29 Paul Thomas <pault@gcc.gnu.org>
919 * interface.c (compare_actual_formal): Error for INTENT(OUT or INOUT)
920 if actual argument is not a variable.
922 2006-01-28 Paul Thomas <pault@gcc.gnu.org>
925 * expr.c (gfc_check_assign, gfc_check_pointer_assign): Emit error if
926 the lvalue is a use associated procedure.
930 * expr.c (gfc_check_pointer_assign): Emit error if lvalue and rvalue
931 character lengths are not the same. Use gfc_dep_compare_expr for the
933 * gfortran.h: Add prototype for gfc_dep_compare_expr.
934 * dependency.h: Remove prototype for gfc_dep_compare_expr.
936 2005-01-27 Paul Thomas <pault@gcc.gnu.org>
939 * resolve.c (resolve_function): Add GFC_ISYM_LOC to the list of
940 generic_ids exempted from assumed size checking.
942 2006-01-27 Jakub Jelinek <jakub@redhat.com>
945 * Make-lang.in (fortran/scanner.o): Depend on toplev.h.
946 * lang.opt (fpreprocessed): New option.
947 * scanner.c: Include toplev.h.
948 (gfc_src_file, gfc_src_preprocessor_lines): New variables.
949 (preprocessor_line): Unescape filename if there were any
951 (load_file): If initial and gfc_src_file is not NULL,
952 use it rather than opening the file. If gfc_src_preprocessor_lines
953 has non-NULL elements, pass it to preprocessor_line.
954 (unescape_filename, gfc_read_orig_filename): New functions.
955 * gfortran.h (gfc_option_t): Add flag_preprocessed.
956 (gfc_read_orig_filename): New prototype.
957 * options.c (gfc_init_options): Clear flag_preprocessed.
958 (gfc_post_options): If flag_preprocessed, call
959 gfc_read_orig_filename.
960 (gfc_handle_option): Handle OPT_fpreprocessed.
961 * lang-specs.h: Pass -fpreprocessed to f951 if preprocessing
964 2005-01-27 Erik Edelmann <eedelman@gcc.gnu.org>
966 * symbol.c (free_old_symbol): Fix confusing comment, and add code
967 to free old_symbol->formal.
969 2005-01-26 Paul Thomas <pault@gcc.gnu.org>
972 * resolve.c (resolve_function): Exclude statement functions from
973 global reference checking.
979 * resolve.c (resolve_function): Declare a gfc_symbol to replace the
980 references through the symtree to the symbol associated with the
981 function expresion. Give error on reference to an assumed character
982 length function is defined in an interface or an external function
983 that is not a dummy argument.
984 (resolve_symbol): Give error if an assumed character length function
985 is array-valued, pointer-valued, pure or recursive. Emit warning
986 that character(*) value functions are obsolescent in F95.
989 * trans-expr.c (gfc_conv_function_call): The above patch to resolve.c
990 prevents any assumed character length function call from getting here
991 except intrinsics such as SPREAD. In this case, ensure that no
992 segfault occurs from referencing non-existent charlen->length->
993 expr_type and provide a backend_decl for the charlen from the charlen
994 of the first actual argument.
996 Cure temp name confusion.
997 * trans-expr.c (gfc_get_interface_mapping_array): Change name of
998 temporary from "parm" to "ifm" to avoid clash with temp coming from
1001 2005-01-25 Erik Edelmann <eedelman@gcc.gnu.org>
1004 * symbol.c (free_old_symbol): New function.
1005 (gfc_commit_symbols): Use it.
1006 (gfc_commit_symbol): New function.
1007 (gfc_use_derived): Use it.
1008 * gfortran.h: Add prototype for gfc_commit_symbol.
1009 * intrinsic.c (gfc_find_function): Search in 'conversion'
1010 if not found in 'functions'.
1011 (gfc_convert_type_warn): Add a symtree to the new
1012 expression node, and commit the new symtree->n.sym.
1013 * resolve.c (gfc_resolve_index): Make sure typespec is
1014 properly initialized.
1016 2005-01-23 Paul Thomas <pault@gcc.gnu.org>
1019 * decl.c (get_proc_name): Replace subroutine and function attributes
1020 in "already defined" test by the formal arglist pointer being non-NULL.
1022 Fix regression in testing of admissability of attributes.
1023 * symbol.c (gfc_add_attribute): If the current_attr has non-zero
1024 intent, do not do the check for a dummy being used.
1025 * decl.c (attr_decl1): Add current_attr.intent as the third argument
1026 in the call to gfc_add_attribute.
1027 * gfortran.h: Add the third argument to the prototype for
1030 2006-01-21 Joseph S. Myers <joseph@codesourcery.com>
1032 * gfortranspec.c (lang_specific_driver): Update copyright notice
1035 2005-01-21 Paul Thomas <pault@gcc.gnu.org>
1039 * decl.c (get_proc_name): If there is an existing
1040 symbol in the encompassing namespace, call errors
1041 if it is a procedure of the same name or the kind
1042 field is set, indicating a type declaration.
1048 * decl.c (add_global_entry): New function to check
1049 for existing global symbol with this name and to
1050 create new one if none exists.
1051 (gfc_match_entry): Call add_global_entry before
1052 matching argument lists for subroutine and function
1054 * gfortran.h: Prototype for existing function,
1056 * resolve.c (resolve_global_procedure): New function
1057 to check global symbols for procedures.
1058 (resolve_call, resolve_function): Calls to this
1059 new function for non-contained and non-module
1061 * match.c (match_common): Add check for existing
1062 global symbol, creat one if none exists and emit
1063 error if there is a clash.
1064 * parse.c (global_used): Remove static and use the
1065 gsymbol name rather than the new_block name, so that
1066 the function can be called from resolve.c.
1067 (parse_block_data, parse_module, add_global_procedure):
1068 Improve checks for existing gsymbols. Emit error if
1069 already defined or if references were to another type.
1073 * trans-expr.c (gfc_conv_aliased_arg): New function called by
1074 gfc_conv_function_call that coverts an expression for an aliased
1075 component reference to a derived type array into a temporary array
1076 of the same type as the component. The temporary is passed as an
1077 actual argument for the procedure call and is copied back to the
1078 derived type after the call.
1079 (is_aliased_array): New function that detects an array reference
1080 that is followed by a component reference.
1081 (gfc_conv_function_call): Detect an aliased actual argument with
1082 is_aliased_array and convert it to a temporary and back again
1083 using gfc_conv_aliased_arg.
1085 2006-01-19 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
1087 * gfortranspec.c: Update copyright years.
1088 * trans.c: Likewise.
1089 * trans-array.c: Likewise.
1090 * trans-array.h: Likewise.
1091 * trans-decl.c: Likewise.
1092 * trans-stmt.c: Likewise.
1093 * trans-stmt.h: Likewise.
1094 * trans-types.c: Likewise.
1096 2006-01-18 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
1100 * gfortran.h (BBT_HEADER): Move definition up.
1101 (gfc_st_label): Add BBT_HEADER, remove 'prev' and 'next'.
1102 * io.c (format_asterisk): Adapt initializer.
1103 * resolve.c (resolve_branch): Allow FORTRAN 66 cross-block GOTOs
1105 (warn_unused_label): Take gfc_st_label label as argument, adapt to
1107 (gfc_resolve): Adapt call to warn_unused_label.
1108 * symbol.c (compare_st_labels): New function.
1109 (gfc_free_st_label, free_st_labels, gfc_get_st_label): Convert to
1110 using balanced binary tree.
1111 * decl.c (match_char_length, gfc_match_old_kind_spec): Do away
1113 (warn_unused_label): Adapt to binary tree.
1114 * match.c (gfc_match_small_literal_int): Only set cnt if non-NULL.
1115 * primary.c (match_kind_param): Do away with cnt.
1117 2006-01-18 Paul Thomas <pault@gcc.gnu.org>
1122 * symbol.c (check_conflict): Add pointer valued elemental
1123 functions and internal procedures with the external attribute
1124 to the list of conflicts.
1125 (gfc_add_attribute): New catch-all function to perform the
1126 checking of symbol attributes for attribute declaration
1128 * decl.c (attr_decl1): Call gfc_add_attribute for each of -
1129 (gfc_match_external, gfc_match_intent, gfc_match_intrinsic,
1130 gfc_match_pointer, gfc_match_dimension, gfc_match_target):
1131 Remove spurious calls to checks in symbol.c. Set the
1132 attribute directly and use the call to attr_decl() for
1134 * gfortran.h: Add prototype for gfc_add_attribute.
1137 * resolve.c (resolve_function): Exclude PRESENT from assumed size
1138 argument checking. Replace strcmp's with comparisons with generic
1141 2006-01-16 Rafael
\81Ávila de Esp
\81índola <rafael.espindola@gmail.com>
1143 * gfortranspec.c (lang_specific_spec_functions): Remove.
1145 2006-01-16 Richard Guenther <rguenther@suse.de>
1147 * trans-stmt.c (gfc_trans_if_1): Use fold_buildN and build_int_cst.
1148 (gfc_trans_arithmetic_if): Likewise.
1149 (gfc_trans_simple_do): Likewise.
1150 (gfc_trans_do): Likewise.
1151 (gfc_trans_do_while): Likewise.
1152 (gfc_trans_logical_select): Likewise.
1153 (gfc_trans_forall_loop): Likewise.
1154 (generate_loop_for_temp_to_lhs): Likewise.
1155 (generate_loop_for_rhs_to_temp): Likewise.
1156 (gfc_trans_allocate): Likewise.
1157 * trans.c (gfc_add_expr_to_block): Do not fold expr again.
1159 2006-01-16 Richard Guenther <rguenther@suse.de>
1161 * trans-expr.c (gfc_conv_function_call): Use fold_build2.
1162 * trans-stmt.c (gfc_trans_goto): Likewise. Use build_int_cst.
1163 * trans.c (gfc_trans_runtime_check): Don't fold the condition
1166 2006-01-13 Steven G. Kargl <kargls@comcast.net>
1169 * symbol.c (gfc_free_st_label): Give variable meaningful name. Remove
1170 unneeded parenthesis. Fix-up the head of the list (2 lines gleaned
1173 2006-01-13 Diego Novillo <dnovillo@redhat.com>
1175 * trans.c (gfc_add_expr_to_block): Do not fold tcc_statement
1178 2006-01-11 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
1180 * parse.c (next_fixed): Remove superfluous string concatenation.
1182 2006-01-11 Bernhard Fischer <rep.nop@aon.at>
1185 * scanner.c (load_line): use maxlen to determine the line-length used
1186 for padding lines in fixed form.
1188 2005-01-11 Paul Thomas <pault@gcc.gnu.org>
1191 * trans-types.c (copy_dt_decls_ifequal): Copy backend decl for
1194 2006-01-09 Andrew Pinski <pinskia@physics.uc.edu>
1197 * trans-stmt.c (gfc_trans_pointer_assign_need_temp): Use fold_convert
1198 to avoid type mismatch.
1200 2006-01-09 Andrew Pinski <pinskia@physics.uc.edu>
1203 * trans-decl.c (gfc_generate_function_code): Move the NULLing of
1204 current_fake_result_decl down to below generate_local_vars.
1206 2006-01-09 Feng Wang <fengwang@nudt.edu.cn>
1209 * trans-expr.c (gfc_to_single_character): New function that converts
1210 string to single character if its length is 1.
1211 (gfc_build_compare_string):New function that compare string and handle
1212 single character specially.
1213 (gfc_conv_expr_op): Use gfc_build_compare_string.
1214 (gfc_trans_string_copy): Use gfc_to_single_character.
1215 * trans-intrinsic.c (gfc_conv_intrinsic_strcmp): Use
1216 gfc_build_compare_string.
1217 * trans.h (gfc_build_compare_string): Add prototype.
1219 2006-01-09 Feng Wang <fengwang@nudt.edu.cn>
1221 * simplify.c (gfc_simplify_char): Use UCHAR_MAX instead of literal
1223 (gfc_simplify_ichar): Get the result from unsinged char and in the
1224 range 0 to UCHAR_MAX instead of CHAR_MIN to CHAR_MAX.
1226 2005-01-08 Erik Edelmann <eedelman@gcc.gnu.org>
1229 * resolve.c (resolve_fntype): Check that PUBLIC functions
1230 aren't of PRIVATE type.
1232 2005-01-07 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de>
1234 * decl.c (gfc_match_function_decl): Correctly error out in case of
1235 omitted function argument list.
1237 2006-01-07 Paul Thomas <pault@gcc.gnu.org>
1240 * trans-array.c (gfc_reverse_ss): Remove static attribute.
1241 (gfc_walk_elemental_function_args): Replace gfc_expr * argument for
1242 the function call with the corresponding gfc_actual_arglist*. Change
1244 (gfc_walk_function_expr): Call to gfc_walk_elemental_function_args
1245 now requires the actual argument list instead of the expression for
1247 * trans-array.h: Modify the prototype for gfc_walk_elemental_function_args
1248 and provide a prototype for gfc_reverse_ss.
1249 * trans-stmt.h (gfc_trans_call): Add the scalarization code for the case
1250 where an elemental subroutine has array valued actual arguments.
1256 * resolve.c (check_assumed_size_reference): New function to check for upper
1257 bound in assumed size array references.
1258 (resolve_assumed_size_actual): New function to do a very restricted scan
1259 of actual argument expressions of those procedures for which incomplete
1260 assumed size array references are not allowed.
1261 (resolve_function, resolve_call): Switch off assumed size checking of
1262 actual arguments, except for elemental procedures and intrinsic
1263 inquiry functions, in some circumstances.
1264 (resolve_variable): Call check_assumed_size_reference.
1266 2006-01-05 Jerry DeLisle <jvdelisle@gcc.gnu.org>
1269 * io.c (next_char_not_space): New function that returns the next
1270 character that is not white space.
1271 (format_lex): Use the new function to skip whitespace within
1274 2006-01-05 Erik Edelmann <eedelman@gcc.gnu.org>
1277 * expr.c (gfc_expr_set_symbols_referenced): New function.
1278 * gfortran.h: Add a function prototype for it.
1279 * resolve.c (resolve_function): Use it for
1280 use associated character functions lengths.
1281 * expr.c, gfortran.h, resolve.c: Updated copyright years.
1283 2006-01-03 Steven G. Kargl <kargls@comcast.net>
1286 * resolve.c (resolve_forall_iterators): Check for scalar variables;
1287 Check stride is nonzero.
1289 2006-01-02 Steven G. Kargl <kargls@comcast.net>
1292 * parse.c (next_free): Check for whitespace after the label.
1293 * match.c (gfc_match_small_literal_int): Initialize cnt variable.
1295 2006-01-01 Steven G. Kargl <kargls@comcast.net>
1297 * ChangeLog: Split previous years into ...
1298 * ChangeLog-2002: here.
1299 * ChangeLog-2003: here.
1300 * ChangeLog-2004: here.
1301 * ChangeLog-2005: here.