1 2006-03-03 Thomas Koenig <Thomas.Koenig@online.de>
4 * trans-array.h: Adjust gfc_array_allocate prototype.
5 * trans-array.c (gfc_array_allocate): Change type of
6 gfc_array_allocatate to bool. Function returns true if
7 it operates on an array. Change second argument to gfc_expr.
8 Find last reference in chain.
9 If the function operates on an allocatable array, emit call to
10 allocate_array() or allocate64_array().
11 * trans-stmt.c (gfc_trans_allocate): Code to follow to last
12 reference has been moved to gfc_array_allocate.
13 * trans.h: Add declaration for gfor_fndecl_allocate_array and
14 gfor_fndecl_allocate64_array.
15 (gfc_build_builtin_function_decls): Add gfor_fndecl_allocate_array
16 and gfor_fndecl_allocate64_array.
18 2006-03-01 Roger Sayle <roger@eyesopen.com>
20 * trans-stmt.c (generate_loop_for_temp_to_lhs): Add an additional
21 INVERT argument to invert the sense of the WHEREMASK argument.
22 Remove unneeded code to AND together a list of masks.
23 (generate_loop_for_rhs_to_temp): Likewise.
24 (gfc_trans_assign_need_temp): Likewise.
25 (gfc_trans_forall_1): Likewise.
26 (gfc_evaluate_where_mask): Likewise, add a new INVERT argument
27 to specify the sense of the MASK argument.
28 (gfc_trans_where_assign): Likewise.
29 (gfc_trans_where_2): Likewise. Restructure code that decides
30 whether we need to allocate zero, one or two temporary masks.
31 If this is a top-level WHERE (i.e. the incoming MAKS is NULL),
32 we only need to allocate at most one temporary mask, and can
33 invert it's sense to provide the complementary pending execution
34 mask. Only calculate the size of the required temporary arrays
36 (gfc_trans_where): Update call to gfc_trans_where_2.
38 2006-03-01 Paul Thomas <pault@gcc.gnu.org>
40 * iresolve.c (gfc_resolve_dot_product): Remove any difference in
41 treatment of logical types.
42 * trans-intrinsic.c (gfc_conv_intrinsic_dot_product): New function.
45 * trans-decl.c (gfc_get_symbol_decl): Extend condition that symbols
46 must be referenced to include unreferenced symbols in an interface
50 * trans-array.c (gfc_conv_resolve_dependencies): Add call to
51 gfc_are_equivalenced_arrays.
52 * symbol.c (gfc_free_equiv_infos, gfc_free_equiv_lists): New
53 functions. (gfc_free_namespace): Call them.
54 * trans-common.c (copy_equiv_list_to_ns): New function.
55 (add_equivalences): Call it.
56 * gfortran.h: Add equiv_lists to gfc_namespace and define
57 gfc_equiv_list and gfc_equiv_info.
58 * dependency.c (gfc_are_equivalenced_arrays): New function.
59 (gfc_check_dependency): Call it.
60 * dependency.h: Prototype for gfc_are_equivalenced_arrays.
62 2006-03-01 Roger Sayle <roger@eyesopen.com>
64 * dependency.c (gfc_is_same_range): Compare the stride, lower and
65 upper bounds when testing array reference ranges for equality.
66 (gfc_check_dependency): Fix indentation whitespace.
67 (gfc_check_element_vs_element): Likewise.
68 (gfc_dep_resolver): Likewise.
70 2006-02-28 Thomas Koenig <Thomas.Koenig@online.de>
72 * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc):
73 If the mask expression exists and has rank 0, enclose the
74 generated loop in an "if (mask)". Put the default
75 initialization into the else branch.
77 2006-02-25 Thomas Koenig <Thomas.Koenig@online.de>
80 * trans-intrinsic.c (gfc_conv_intrinsic_arith): If the
81 mask expression exists and has rank 0, enclose the generated
82 loop in an "if (mask)".
83 * (gfc_conv_intrinsic_minmaxloc): Likewise.
85 2006-02-24 Paul Thomas <pault@gcc.gnu.org>
88 * resolve.c (resolve_contained_functions, resolve_types,
89 gfc_resolve): Revert patch of 2006-02-19.
91 2006-02-24 Paul Thomas <pault@gcc.gnu.org>
94 * dependency.c (gfc_is_same_range): Correct typo.
95 (gfc_check_section_vs_section): Call gfc_is_same_range.
98 * trans-common.c (add_equivalences): Add a new flag that is set when
99 an equivalence is seen that prevents more from being reset until the
100 start of a new traversal of the list, thus ensuring completion of
101 all the equivalences.
103 2006-02-23 Erik Edelmann <eedelman@gcc.gnu.org>
105 * module.c (read_module): Remove redundant code lines.
107 2006-02-20 Rafael
\81Ávila de Esp
\81índola <rafael.espindola@gmail.com>
108 * Make-lang.in (FORTRAN): Remove
109 (.PHONY): Remove F95 and f95. Add fortran
111 2006-02-20 Roger Sayle <roger@eyesopen.com>
113 * trans-stmt.c (gfc_trans_where_2): Avoid updating unused current
114 execution mask for empty WHERE/ELSEWHERE clauses. Don't allocate
115 temporary mask arrays if they won't be used.
117 2006-02-20 Roger Sayle <roger@eyesopen.com>
119 * trans-stmt.c (gfc_trans_where_assign): Remove code to handle
120 traversing a linked list of MASKs. The MASK is now always a
121 single element requiring no ANDing during the assignment.
123 2006-02-19 Thomas Koenig <Thomas.Koenig@online.de>
125 * gfortran.texi: Document environment variables which
126 influence runtime behavior.
128 2006-02-19 H.J. Lu <hongjiu.lu@intel.com>
130 * resolve.c (resolve_contained_functions): Call resolve_entries
132 (resolve_types): Remove calls to resolve_entries and
133 resolve_contained_functions.
134 (gfc_resolve): Call resolve_contained_functions.
136 2006-02-19 Erik Edelmann <eedelman@gcc.gnu.org>
139 * intrinsic.c (gfc_convert_type_warn): Call
140 gfc_intrinsic_symbol() on the newly created symbol.
142 2005-02-19 Paul Thomas <pault@gcc.gnu.org>
145 * resolve.c (is_non_constant_shape_array): New function.
146 (resolve_fl_variable): Remove code for the new function and call it.
147 (resolve_fl_namelist): New function. Add test for namelist array
148 with non-constant shape, using is_non_constant_shape_array.
149 (resolve_symbol): Remove code for resolve_fl_namelist and call it.
152 * match.c (match_namelist): Increment the refs field of an accepted
153 namelist object symbol.
154 * resolve.c (resolve_fl_namelist): Test namelist objects for a conflict
155 with contained or module procedures.
157 2006-02-18 Roger Sayle <roger@eyesopen.com>
159 * trans-stmt.c (struct temporary_list): Delete.
160 (gfc_trans_where_2): Major reorganization. Remove no longer needed
161 TEMP argument. Allocate and deallocate the control mask and
162 pending control mask locally.
163 (gfc_trans_forall_1): Delete TEMP local variable, and update
164 call to gfc_trans_where_2. No need to deallocate arrays after.
165 (gfc_evaluate_where_mask): Major reorganization. Change return
166 type to void. Pass in parent execution mask, MASK, and two
167 already allocated mask arrays CMASK and PMASK. On return
168 CMASK := MASK & COND, PMASK := MASK & !COND. MASK, CMASK and
169 CMASK may all be NULL, or refer to the same temporary arrays.
170 (gfc_trans_where): Update call to gfc_trans_where_2. We no
171 longer need a TEMP variable or to deallocate temporary arrays
172 allocated by gfc_trans_where_2.
174 2006-02-18 Danny Smith <dannysmith@users.sourceforeg.net>
176 * gfortran.h (gfc_add_attribute): Change uint to unsigned int.
177 * symbol.c (gfc_add_attribute): Likewise for definition.
178 * resolve.c (resolve_global_procedure): Likewise for variable 'type'.
180 2006-02-17 Richard Sandiford <richard@codesourcery.com>
182 * trans-common.c: Include rtl.h earlier.
183 * trans-decl.c: Likewise.
185 2006-02-16 Jakub Jelinek <jakub@redhat.com>
188 * parse.c (parse_omp_do, parse_omp_structured_block): Call
189 gfc_commit_symbols and gfc_warning_check.
191 * openmp.c (resolve_omp_clauses): Add a dummy case label to workaround
194 2005-02-16 Paul Thomas <pault@gcc.gnu.org>
197 * trans-expr.c (gfc_add_interface_mapping): Use the actual argument
198 for character(*) arrays, rather than casting to the type and kind
199 parameters of the formal argument.
201 2006-02-15 Toon Moene <toon@moene.indiv.nluug.nl>
204 * options.c: Do not warn for Fortran 2003 features by default.
206 2006-02-15 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
208 * check.c: Update copyright years.
210 * check.c (gfc_check_minloc_maxloc, check_reduction): Don't call
211 dim_range_check on not-present optional dim argument.
213 2006-02-15 Jakub Jelinek <jakub@redhat.com>
217 * Make-lang.in (install-finclude-dir): New goal.
218 (fortran.install-common): Depend on install-finclude-dir.
219 * lang-specs.h: If not -nostdinc, add -I finclude.
221 2006-02-14 Thomas Koenig <Thomas.Koenig@online.de>
224 * check.c (dim_check): Perform all checks if dim is optional.
225 (gfc_check_minloc_maxloc): Use dim_check and dim_rank_check
226 to check dim argument.
227 (check_reduction): Likewise.
229 2006-02-14 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
232 * io.c (match_ltag): Mark label as referenced.
234 2006-02-14 Jakub Jelinek <jakub@redhat.com>
235 Richard Henderson <rth@redhat.com>
236 Diego Novillo <dnovillo@redhat.com>
238 * invoke.texi: Document -fopenmp.
239 * gfortran.texi (Extensions): Document OpenMP.
241 Backport from gomp-20050608-branch
242 * trans-openmp.c: Call build_omp_clause instead of
243 make_node when creating OMP_CLAUSE_* trees.
244 (gfc_trans_omp_reduction_list): Remove argument 'code'.
247 * trans.h (build4_v): Define.
248 * trans-openmp.c: Call build4_v to create OMP_PARALLEL nodes.
249 Call build3_v to create OMP_SECTIONS nodes.
252 * openmp.c (gfc_match_omp_variable_list): Call gfc_set_sym_referenced
253 on all symbols added to the variable list.
255 * openmp.c (gfc_match_omp_clauses): Fix check for non-INTRINSIC
256 procedure symbol in REDUCTION.
258 * trans-openmp.c (gfc_trans_omp_array_reduction): Use gfc_add
259 for MINUS_EXPR OMP_CLAUSE_REDUCTION_CODE.
261 * trans-openmp.c (gfc_trans_omp_do): Add PBLOCK argument. If PBLOCK
262 is non-NULL, evaluate INIT/COND/INCR and chunk size expressions in
263 that statement block.
264 (gfc_trans_omp_parallel_do): Pass non-NULL PBLOCK to gfc_trans_omp_do
265 for non-ordered non-static combined loops.
266 (gfc_trans_omp_directive): Pass NULL PBLOCK to gfc_trans_omp_do.
268 * openmp.c: Include target.h and toplev.h.
269 (gfc_match_omp_threadprivate): Emit diagnostic if target does
271 * Make-lang.in (fortran/openmp.o): Add dependencies on
272 target.h and toplev.h.
274 * trans-decl.c (gfc_get_fake_result_decl): Set GFC_DECL_RESULT.
275 * trans-openmp.c (gfc_omp_privatize_by_reference): Make
276 DECL_ARTIFICIAL vars predetermined shared except GFC_DECL_RESULT.
277 (gfc_omp_disregard_value_expr): Handle GFC_DECL_RESULT.
278 (gfc_trans_omp_variable): New function.
279 (gfc_trans_omp_variable_list, gfc_trans_omp_reduction_list): Use it.
280 * trans.h (GFC_DECL_RESULT): Define.
282 * trans-openmp.c (gfc_omp_firstprivatize_type_sizes): New function.
283 * f95-lang.c (LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES): Define.
284 * trans.h (gfc_omp_firstprivatize_type_sizes): New prototype.
286 * trans-openmp.c (gfc_omp_privatize_by_reference): Return
287 true if a pointer has GFC_DECL_SAVED_DESCRIPTOR set.
288 (gfc_trans_omp_array_reduction, gfc_trans_omp_reduction_list): New
290 (gfc_trans_omp_clauses): Add WHERE argument. Call
291 gfc_trans_omp_reduction_list rather than gfc_trans_omp_variable_list
293 (gfc_trans_omp_do, gfc_trans_omp_parallel, gfc_trans_omp_parallel_do,
294 gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare,
295 gfc_trans_omp_sections, gfc_trans_omp_single): Adjust
296 gfc_trans_omp_clauses callers.
298 * openmp.c (omp_current_do_code): New var.
299 (gfc_resolve_omp_do_blocks): New function.
300 (gfc_resolve_omp_parallel_blocks): Call it.
301 (gfc_resolve_do_iterator): Add CODE argument. Don't propagate
302 predetermination if argument is !$omp do or !$omp parallel do
304 * resolve.c (resolve_code): Call gfc_resolve_omp_do_blocks
305 for EXEC_OMP_DO. Adjust gfc_resolve_do_iterator caller.
306 * fortran.h (gfc_resolve_omp_do_blocks): New prototype.
307 (gfc_resolve_do_iterator): Add CODE argument.
309 * trans.h (gfc_omp_predetermined_sharing,
310 gfc_omp_disregard_value_expr, gfc_omp_private_debug_clause): New
312 (GFC_DECL_COMMON_OR_EQUIV, GFC_DECL_CRAY_POINTEE): Define.
313 * trans-openmp.c (gfc_omp_predetermined_sharing,
314 gfc_omp_disregard_value_expr, gfc_omp_private_debug_clause): New
316 * trans-common.c (build_equiv_decl, build_common_decl,
317 create_common): Set GFC_DECL_COMMON_OR_EQUIV flag on the decls.
318 * trans-decl.c (gfc_finish_cray_pointee): Set GFC_DECL_CRAY_POINTEE
320 * f95-lang.c (LANG_HOOKS_OMP_PREDETERMINED_SHARING,
321 LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR,
322 LANG_HOOKS_OMP_PRIVATE_DEBUG_CLAUSE): Define.
324 * openmp.c (resolve_omp_clauses): Remove extraneous comma.
326 * symbol.c (check_conflict): Add conflict between cray_pointee and
328 * openmp.c (gfc_match_omp_threadprivate): Fail if
329 gfc_add_threadprivate returned FAILURE.
330 (resolve_omp_clauses): Diagnose Cray pointees in SHARED,
331 {,FIRST,LAST}PRIVATE and REDUCTION clauses and Cray pointers in
332 {FIRST,LAST}PRIVATE and REDUCTION clauses.
334 * resolve.c (omp_workshare_flag): New variable.
335 (resolve_function): Diagnose use of non-ELEMENTAL user defined
336 function in WORKSHARE construct.
337 (resolve_code): Cleanup forall_save use. Make sure omp_workshare_flag
338 is set to correct value in different contexts.
340 * openmp.c (resolve_omp_clauses): Replace %s with '%s' when printing
342 (resolve_omp_atomic): Likewise.
345 * scanner.c (skip_free_comments): Set at_bol at the beginning of the
347 (skip_fixed_comments): Handle ! comments in the middle of line here
349 (gfc_skip_comments): Use skip_fixed_comments for FIXED_FORM even if
351 (gfc_next_char_literal): Fix expected canonicalized *$omp string.
353 * trans-openmp.c (gfc_trans_omp_do): Use make_node and explicit
354 initialization to build OMP_FOR instead of build.
356 * trans-decl.c (gfc_gimplify_function): Invoke
357 diagnose_omp_structured_block_errors.
359 * trans-openmp.c (gfc_trans_omp_master): Use OMP_MASTER.
360 (gfc_trans_omp_ordered): Use OMP_ORDERED.
362 * gfortran.h (gfc_resolve_do_iterator, gfc_resolve_blocks,
363 gfc_resolve_omp_parallel_blocks): New prototypes.
364 * resolve.c (resolve_blocks): Renamed to...
365 (gfc_resolve_blocks): ... this. Remove static.
366 (gfc_resolve_forall): Adjust caller.
367 (resolve_code): Only call gfc_resolve_blocks if code->block != 0
368 and not for EXEC_OMP_PARALLEL* directives. Call
369 gfc_resolve_omp_parallel_blocks for EXEC_OMP_PARALLEL* directives.
370 Call gfc_resolve_do_iterator if resolved successfully EXEC_DO
372 * openmp.c: Include pointer-set.h.
373 (omp_current_ctx): New variable.
374 (gfc_resolve_omp_parallel_blocks, gfc_resolve_do_iterator): New
376 * Make-lang.in (fortran/openmp.o): Depend on pointer-set.h.
378 * openmp.c (gfc_match_omp_clauses): For max/min/iand/ior/ieor,
379 look up symbol if it exists, use its name instead and, if it is not
380 INTRINSIC, issue diagnostics.
382 * parse.c (parse_omp_do): Handle implied end do properly.
383 (parse_executable): If parse_omp_do returned ST_IMPLIED_ENDDO,
384 return it instead of continuing.
386 * trans-openmp.c (gfc_trans_omp_critical): Update for changed
388 (gfc_trans_omp_do, gfc_trans_omp_parallel, gfc_trans_omp_parallel_do,
389 gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare,
390 gfc_trans_omp_sections, gfc_trans_omp_single): Likewise.
392 * trans.h (gfc_omp_privatize_by_reference): New prototype.
393 * f95-lang.c (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Redefine
394 to gfc_omp_privatize_by_reference.
395 * trans-openmp.c (gfc_omp_privatize_by_reference): New function.
397 * trans-stmt.h (gfc_trans_omp_directive): Add comment.
399 * openmp.c (gfc_match_omp_variable_list): Add ALLOW_COMMON argument.
400 Disallow COMMON matching if it is set.
401 (gfc_match_omp_clauses, gfc_match_omp_flush): Adjust all callers.
402 (resolve_omp_clauses): Show locus in error messages. Check that
403 variable types in reduction clauses are appropriate for reduction
406 * resolve.c (resolve_symbol): Don't error if a threadprivate module
407 variable isn't SAVEd.
409 * trans-openmp.c (gfc_trans_omp_do): Put count into BLOCK, not BODY.
410 Fix typo in condition. Fix DOVAR initialization.
412 * openmp.c (gfc_match_omp_clauses): Match min/iand/ior/ieor
413 rather than .min. etc.
415 * trans-openmpc.c (omp_not_yet): Remove.
416 (gfc_trans_omp_parallel_do): Keep listprivate clause on parallel.
417 Force creation of BIND_EXPR around the workshare construct.
418 (gfc_trans_omp_parallel_sections): Likewise.
419 (gfc_trans_omp_parallel_workshare): Likewise.
421 * types.def (BT_I16, BT_FN_I16_VPTR_I16,
422 BT_FN_BOOL_VPTR_I16_I16, BT_FN_I16_VPTR_I16_I16): Add.
424 * trans-openmp.c (gfc_trans_omp_clauses): Create OMP_CLAUSE_DEFAULT.
425 (gfc_trans_omp_code): New function.
426 (gfc_trans_omp_do): Use it, remove omp_not_yet uses.
427 (gfc_trans_omp_parallel, gfc_trans_omp_single): Likewise.
428 (gfc_trans_omp_sections): Likewise. Only treat empty last section
429 specially if lastprivate clause is present.
430 * f95-lang.c (gfc_init_builtin_functions): Create BUILT_IN_TRAP
433 * trans-openmp.c (gfc_trans_omp_variable_list): Update for
434 OMP_CLAUSE_DECL name change.
435 (gfc_trans_omp_do): Likewise.
437 * trans-openmp.c (gfc_trans_omp_clauses): Create OMP_CLAUSE_REDUCTION
439 (gfc_trans_omp_atomic): Build OMP_ATOMIC instead of expanding
440 sync builtins directly.
441 (gfc_trans_omp_single): Build OMP_SINGLE statement.
443 * trans-openmp.c (gfc_trans_add_clause): New.
444 (gfc_trans_omp_variable_list): Take a tree code and build the clause
445 node here. Link it to the head of a list.
446 (gfc_trans_omp_clauses): Update to match.
447 (gfc_trans_omp_do): Use gfc_trans_add_clause.
449 * trans-openmp.c (gfc_trans_omp_clauses): Change second argument to
450 gfc_omp_clauses *. Use gfc_evaluate_now instead of creating
452 (gfc_trans_omp_atomic, gfc_trans_omp_critical): Use buildN_v macros.
453 (gfc_trans_omp_do): New function.
454 (gfc_trans_omp_master): Dont' check for gfc_trans_code returning NULL.
455 (gfc_trans_omp_parallel): Adjust gfc_trans_omp_clauses caller.
457 (gfc_trans_omp_parallel_do, gfc_trans_omp_parallel_sections,
458 gfc_trans_omp_parallel_workshare, gfc_trans_omp_sections,
459 gfc_trans_omp_single, gfc_trans_omp_workshare): New functions.
460 (gfc_trans_omp_directive): Use them.
461 * parse.c (parse_omp_do): Allow new_st.op == EXEC_NOP.
462 * openmp.c (resolve_omp_clauses): Check for list items present
464 (resolve_omp_do): Check that iteration variable is not THREADPRIVATE
465 and is not present in any clause variable lists other than PRIVATE
468 * gfortran.h (symbol_attribute): Add threadprivate bit.
469 (gfc_common_head): Add threadprivate member, change use_assoc
470 and saved into char to save space.
471 (gfc_add_threadprivate): New prototype.
472 * symbol.c (check_conflict): Handle threadprivate.
473 (gfc_add_threadprivate): New function.
474 (gfc_copy_attr): Copy threadprivate.
475 * trans-openmp.c (gfc_trans_omp_clauses): Avoid creating a temporary
476 if IF or NUM_THREADS is constant. Create OMP_CLAUSE_SCHEDULE and
478 * resolve.c (resolve_symbol): Complain if a THREADPRIVATE symbol
479 outside a module and not in COMMON has is not SAVEd.
480 (resolve_equivalence): Ensure THREADPRIVATE objects don't get
482 * trans-common.c: Include target.h and rtl.h.
483 (build_common_decl): Set DECL_TLS_MODEL if THREADPRIVATE.
484 * trans-decl.c: Include rtl.h.
485 (gfc_finish_var_decl): Set DECL_TLS_MODEL if THREADPRIVATE.
486 * dump-parse-tree.c (gfc_show_attr): Handle THREADPRIVATE.
487 * Make-lang.in (fortran/trans-decl.o): Depend on $(RTL_H).
488 (fortran/trans-common.o): Depend on $(RTL_H) and $(TARGET_H).
489 * openmp.c (gfc_match_omp_variable_list): Ensure COMMON block
490 is from current namespace.
491 (gfc_match_omp_threadprivate): Rewrite.
492 (resolve_omp_clauses): Check some clause restrictions.
493 * module.c (ab_attribute): Add AB_THREADPRIVATE.
494 (attr_bits): Add THREADPRIVATE.
495 (mio_symbol_attribute, mio_symbol_attribute): Handle threadprivate.
496 (load_commons, write_common, write_blank_common): Adjust for type
497 change of saved, store/load threadprivate bit from the integer
500 * types.def (BT_FN_UINT_UINT): New.
501 (BT_FN_VOID_UINT_UINT): Remove.
503 * trans-openmp.c (gfc_trans_omp_clauses, gfc_trans_omp_barrier,
504 gfc_trans_omp_critical, gfc_trans_omp_flush, gfc_trans_omp_master,
505 gfc_trans_omp_ordered, gfc_trans_omp_parallel): New functions.
506 (gfc_trans_omp_directive): Use them.
508 * openmp.c (expr_references_sym): Add SE argument, don't look
510 (is_conversion): New function.
511 (resolve_omp_atomic): Adjust expr_references_sym callers. Handle
512 promoted expressions.
513 * trans-openmp.c (gfc_trans_omp_atomic): New function.
514 (gfc_trans_omp_directive): Call it.
516 * f95-lang.c (builtin_type_for_size): New function.
517 (gfc_init_builtin_functions): Initialize synchronization and
519 * types.def: New file.
520 * Make-lang.in (f95-lang.o): Depend on $(BUILTINS_DEF) and
523 * trans-openmp.c: Rename GOMP_* tree codes into OMP_*.
525 * dump-parse-tree.c (show_symtree): Don't crash if ns->proc_name
528 * dump-parse-tree.c (gfc_show_namelist, gfc_show_omp_node): New
530 (gfc_show_code_node): Call gfc_show_omp_node for EXEC_OMP_* nodes.
532 * parse.c (parse_omp_do): Call pop_state before next_statement.
533 * openmp.c (expr_references_sym, resolve_omp_atomic, resolve_omp_do):
535 (gfc_resolve_omp_directive): Call them.
536 * match.c (match_exit_cycle): Issue error if EXIT or CYCLE statement
537 leaves an OpenMP structured block or if EXIT terminates !$omp do
540 * Make-lang.in (F95_PARSER_OBJS): Add fortran/openmp.o.
541 (F95_OBJS): Add fortran/trans-openmp.o.
542 (fortran/trans-openmp.o): Depend on $(GFORTRAN_TRANS_DEPS).
543 * lang.opt: Add -fopenmp option.
544 * options.c (gfc_init_options): Initialize it.
545 (gfc_handle_option): Handle it.
546 * gfortran.h (ST_OMP_ATOMIC, ST_OMP_BARRIER, ST_OMP_CRITICAL,
547 ST_OMP_END_CRITICAL, ST_OMP_END_DO, ST_OMP_END_MASTER,
548 ST_OMP_END_ORDERED, ST_OMP_END_PARALLEL, ST_OMP_END_PARALLEL_DO,
549 ST_OMP_END_PARALLEL_SECTIONS, ST_OMP_END_PARALLEL_WORKSHARE,
550 ST_OMP_END_SECTIONS, ST_OMP_END_SINGLE, ST_OMP_END_WORKSHARE,
551 ST_OMP_DO, ST_OMP_FLUSH, ST_OMP_MASTER, ST_OMP_ORDERED,
552 ST_OMP_PARALLEL, ST_OMP_PARALLEL_DO, ST_OMP_PARALLEL_SECTIONS,
553 ST_OMP_PARALLEL_WORKSHARE, ST_OMP_SECTIONS, ST_OMP_SECTION,
554 ST_OMP_SINGLE, ST_OMP_THREADPRIVATE, ST_OMP_WORKSHARE): New
556 (OMP_LIST_PRIVATE, OMP_LIST_FIRSTPRIVATE, OMP_LIST_LASTPRIVATE,
557 OMP_LIST_COPYPRIVATE, OMP_LIST_SHARED, OMP_LIST_COPYIN,
558 OMP_LIST_PLUS, OMP_LIST_REDUCTION_FIRST, OMP_LIST_MULT,
559 OMP_LIST_SUB, OMP_LIST_AND, OMP_LIST_OR, OMP_LIST_EQV,
560 OMP_LIST_NEQV, OMP_LIST_MAX, OMP_LIST_MIN, OMP_LIST_IAND,
561 OMP_LIST_IOR, OMP_LIST_IEOR, OMP_LIST_REDUCTION_LAST, OMP_LIST_NUM):
562 New OpenMP variable list types.
563 (gfc_omp_clauses): New typedef.
564 (gfc_get_omp_clauses): Define.
565 (EXEC_OMP_CRITICAL, EXEC_OMP_DO, EXEC_OMP_FLUSH, EXEC_OMP_MASTER,
566 EXEC_OMP_ORDERED, EXEC_OMP_PARALLEL, EXEC_OMP_PARALLEL_DO,
567 EXEC_OMP_PARALLEL_SECTIONS, EXEC_OMP_PARALLEL_WORKSHARE,
568 EXEC_OMP_SECTIONS, EXEC_OMP_SINGLE, EXEC_OMP_WORKSHARE,
569 EXEC_OMP_ATOMIC, EXEC_OMP_BARRIER, EXEC_OMP_END_NOWAIT,
570 EXEC_OMP_END_SINGLE): New OpenMP gfc_exec_op codes.
571 (struct gfc_code): Add omp_clauses, omp_name, omp_namelist
572 and omp_bool fields to ext union.
573 (flag_openmp): Declare.
574 (gfc_free_omp_clauses, gfc_resolve_omp_directive): New prototypes.
575 * scanner.c (openmp_flag, openmp_locus): New variables.
576 (skip_free_comments, skip_fixed_comments, gfc_next_char_literal):
577 Handle OpenMP directive lines and conditional compilation magic
579 * parse.h (COMP_OMP_STRUCTURED_BLOCK): New compile state.
580 * parse.c (decode_omp_directive, parse_omp_do, parse_omp_atomic,
581 parse_omp_structured_block): New functions.
582 (next_free, next_fixed): Parse OpenMP directives.
583 (case_executable, case_exec_markers, case_decl): Add ST_OMP_*
585 (gfc_ascii_statement): Handle ST_OMP_* codes.
586 (parse_executable): Rearrange the loop slightly, so that
587 parse_omp_do can return next_statement.
588 * match.h (gfc_match_omp_eos, gfc_match_omp_atomic,
589 gfc_match_omp_barrier, gfc_match_omp_critical, gfc_match_omp_do,
590 gfc_match_omp_flush, gfc_match_omp_master, gfc_match_omp_ordered,
591 gfc_match_omp_parallel, gfc_match_omp_parallel_do,
592 gfc_match_omp_parallel_sections, gfc_match_omp_parallel_workshare,
593 gfc_match_omp_sections, gfc_match_omp_single,
594 gfc_match_omp_threadprivate, gfc_match_omp_workshare,
595 gfc_match_omp_end_nowait, gfc_match_omp_end_single): New prototypes.
596 * resolve.c (resolve_blocks): Ignore EXEC_OMP_* block directives.
597 (resolve_code): Call gfc_resolve_omp_directive on EXEC_OMP_*
599 * trans.c (gfc_trans_code): Call gfc_trans_omp_directive for
600 EXEC_OMP_* directives.
601 * st.c (gfc_free_statement): Handle EXEC_OMP_* statement freeing.
602 * trans-stmt.h (gfc_trans_omp_directive): New prototype.
603 * openmp.c: New file.
604 * trans-openmp.c: New file.
606 2006-02-13 Andrew Pinski <pinskia@physics.uc.edu>
607 Jakub Jelinek <jakub@redhat.com>
610 * trans-decl.c (gfc_get_symbol_decl, gfc_get_fake_result_decl): Use
611 gfc_add_decl_to_function rather than gfc_finish_var_decl on length.
613 2006-02-13 Paul Thomas <pault@gcc.gnu.org>
617 * resolve.c (resolve_symbol): Extend the requirement that module
618 arrays have constant bounds to those in the main program. At the
619 same time simplify the array bounds, to avoiding trapping parameter
620 array references, and exclude automatic character length from main
621 and modules. Rearrange resolve_symbol and resolve_derived to put as
622 each flavor together, as much as is possible and move all specific
623 code for flavors FL_VARIABLE, FL_PROCEDURE and FL_PARAMETER into new
625 (resolve_fl_var_and_proc, resolve_fl_variable, resolve_fl_procedure):
626 New functions to do work of resolve_symbol.
627 (resolve_index_expr): New function that is called from resolved_symbol
628 and is extracted from resolve_charlen.
629 (resolve_charlen): Call this new function.
630 (resolve_fl_derived): Renamed resolve_derived to be consistent with
631 the naming of the new functions for the other flavours. Change the
632 charlen checking so that the style is consistent with other similar
633 checks. Add the generation of the gfc_dt_list, removed from resolve_
637 * resolve.c (resolve_actual_arglist): Prevent internal procedures
638 from being dummy arguments.
641 * resolve.c (resolve_actual_arglist): Prevent pure but non-intrinsic
642 procedures from being dummy arguments.
645 * resolve.c (check_data_variable): Add test that data variable is in
649 * resolve.c (resolve_call): Add test that the subroutine does not
652 2006-02-12 Erik Edelmann <eedelman@gcc.gnu.org>
655 * trans-array.c (gfc_trans_allocate_array_storage): New argument
656 dealloc; free the temporary only if dealloc is true.
657 (gfc_trans_allocate_temp_array): New argument bool dealloc, to be
658 passed onwards to gfc_trans_allocate_array_storage.
659 (gfc_trans_array_constructor, gfc_conv_loop_setup): Update call to
660 gfc_trans_allocate_temp_array.
661 * trans-array.h (gfc_trans_allocate_temp_array): Update function
663 * trans-expr.c (gfc_conv_function_call): Set new argument 'dealloc'
664 to gfc_trans_allocate_temp_array to false in case of functions
666 (gfc_trans_arrayfunc_assign): Return NULL for functions returning
669 2006-02-10 Steven G. Kargl <kargls@comcast.net>
672 *decl.c (variable_decl): Improve error message. Remove initialization
673 typespec. Wrap long line.
674 *expr.c (gfc_check_pointer_assign): Permit checking of type, kind type,
676 *simplify.c (gfc_simplify_null): Ensure type, kind type, and rank
680 2006-02-10 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
683 * arith.c (eval_intrinsic): Accept INTRINSIC_PARENTHESES.
684 * expr.c (check_intrinsic_op): Likewise.
685 * module.c (mio_expr): Likewise.
687 2006-02-09 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
689 * dump-parse-tree.c: Update copyright years.
690 * matchexp.c: Likewise.
691 * module.c: Likewise.
694 * gfortran.h (gfc_intrinsic_op): Add INTRINSIC_PARENTHESES.
695 * dump-parse-tree (gfc_show_expr): Handle INTRINSIC_PARENTHESES.
696 * expr.c (simplify_intrinsic_op): Treat INTRINSIC_PARENTHESES as
697 if it were INTRINSIC_UPLUS.
698 * resolve.c (resolve_operator): Handle INTRINSIC_PARENTHESES.
699 * match.c (intrinsic_operators): Add INTRINSIC_PARENTHESES.
700 * matchexp.c (match_primary): Record parentheses surrounding
702 * module.c (intrinsics): Add INTRINSIC_PARENTHESES for module
704 * trans-expr.c (gfc_conv_expr_op): Handle INTRINSIC_PARENTHESES.
706 2006-02-09 Paul Thomas <pault@gcc.gnu.org>
709 * trans-stmt.c (gfc_trans_allocate): Provide assumed character length
710 scalar with missing backend_decl for the hidden dummy charlen.
713 * interface.c (gfc_extend_assign): Remove detection of non-PURE
714 subroutine in assignment interface, with gfc_error, and put it in
715 * resolve.c (resolve_code).
718 * interface.c (gfc_procedure_use): Flag rank checking for non-
719 elemental, contained or interface procedures in call to
720 (compare_actual_formal), where ranks are checked for assumed
723 2006-02-08 Francois-Xavier Coudert <coudert@clipper.ens.fr>
726 * trans-decl.c (gfc_generate_function_code): Add new argument,
727 pedantic, to set_std call.
729 2005-02-06 Thomas Koenig <Thomas.Koenig@online.de>
732 * gfortran.texi: Document the GFORTRAN_CONVERT_UNIT environment
734 * invoke.texi: Mention the "Runtime" chapter.
735 Document the -fconvert= option.
736 * gfortran.h: Add options_convert.
737 * lang.opt: Add fconvert=little-endian, fconvert=big-endian,
738 fconvert=native and fconvert=swap.
739 * trans-decl.c (top level): Add gfor_fndecl_set_convert.
740 (gfc_build_builtin_function_decls): Set gfor_fndecl_set_convert.
741 (gfc_generate_function_code): If -fconvert was specified,
742 and this is the main program, add a call to set_convert().
743 * options.c: Handle the -fconvert options.
745 2006-02-06 Roger Sayle <roger@eyesopen.com>
747 * trans-stmt.c (gfc_evaluate_where_mask): Allow the NMASK argument
748 to be NULL to indicate that the not mask isn't required.
749 (gfc_trans_where_2): Remove PMASK argument. Avoid calculating the
750 pending mask for the last clause of a WHERE chain. Update recursive
752 (gfc_trans_forall_1): Update call to gfc_trans_where_2.
753 (gfc_trans_where): Likewise.
755 2006-02-06 Jakub Jelinek <jakub@redhat.com>
757 Backport from gomp-20050608-branch
758 * trans-decl.c (create_function_arglist): Handle dummy functions.
760 * trans-decl.c (gfc_get_symbol_decl): Revert explicit setting of
762 (gfc_trans_vla_type_sizes): Also "gimplify"
763 GFC_TYPE_ARRAY_DATAPTR_TYPE for GFC_DESCRIPTOR_TYPE_P types.
764 * trans-array.c (gfc_trans_deferred_array): Call
765 gfc_trans_vla_type_sizes.
767 * trans-decl.c (saved_function_decls, saved_parent_function_decls):
768 Remove unnecessary initialization.
769 (create_function_arglist): Make sure __result has complete type.
770 (gfc_get_fake_result_decl): Change current_fake_result_decl into
771 a tree chain. For entry master, create a separate variable
772 for each result name. For BT_CHARACTER results, call
773 gfc_finish_var_decl on length even if it has been already created,
775 (gfc_trans_vla_type_sizes): For function/entry result, adjust
776 result value type, not the FUNCTION_TYPE.
777 (gfc_generate_function_code): Adjust for current_fake_result_decl
779 (gfc_trans_deferred_vars): Likewise. Call gfc_trans_vla_type_sizes
780 even on result if it is assumed-length character.
782 * trans-decl.c (gfc_trans_dummy_character): Add SYM argument.
783 Call gfc_trans_vla_type_sizes.
784 (gfc_trans_auto_character_variable): Call gfc_trans_vla_type_sizes.
785 (gfc_trans_vla_one_sizepos, gfc_trans_vla_type_sizes_1,
786 gfc_trans_vla_type_sizes): New functions.
787 (gfc_trans_deferred_vars): Adjust gfc_trans_dummy_character
788 callers. Call gfc_trans_vla_type_sizes on assumed-length
789 character parameters.
790 * trans-array.c (gfc_trans_array_bounds,
791 gfc_trans_auto_array_allocation, gfc_trans_dummy_array_bias): Call
792 gfc_trans_vla_type_sizes.
793 * trans.h (gfc_trans_vla_type_sizes): New prototype.
795 * trans-decl.c (gfc_build_qualified_array): For non-assumed-size
796 arrays without constant size, create also an index var for
797 GFC_TYPE_ARRAY_SIZE (type). If the type is incomplete, complete
799 (gfc_create_string_length): Don't call gfc_defer_symbol_init
800 if just creating DECL_ARGUMENTS.
801 (gfc_get_symbol_decl): Call gfc_finish_var_decl and
802 gfc_defer_symbol_init even if ts.cl->backend_decl is already
803 set to a VAR_DECL that doesn't have DECL_CONTEXT yet.
804 (create_function_arglist): Rework, so that hidden length
805 arguments for CHARACTER parameters are created together with
806 the parameters. Resolve ts.cl->backend_decl for CHARACTER
807 parameters. If the argument is a non-constant length array
808 or CHARACTER, ensure PARM_DECL has different type than
810 (generate_local_decl): Call gfc_get_symbol_decl even
811 for non-referenced non-constant length CHARACTER parameters
812 after optionally issuing warnings.
813 * trans-array.c (gfc_trans_array_bounds): Set last stride
814 to GFC_TYPE_ARRAY_SIZE (type) to initialize it as well.
815 (gfc_trans_dummy_array_bias): Initialize GFC_TYPE_ARRAY_SIZE (type)
818 * trans-expr.c (gfc_conv_expr_val): Fix comment typo.
820 * trans-stmt.c (gfc_trans_simple_do): Fix comment.
822 2006-02-04 Roger Sayle <roger@eyesopen.com>
824 * dependency.c (gfc_check_dependency): Remove unused vars and nvars
825 arguments. Replace with an "identical" argument. A full array
826 reference to the same symbol is a dependency if identical is true.
827 * dependency.h (gfc_check_dependency): Update prototype.
828 * trans-array.h (gfc_check_dependency): Delete duplicate prototype.
829 * trans-stmt.c: #include dependency.h for gfc_check_dependency.
830 (gfc_trans_forall_1): Update calls to gfc_check_dependency.
831 (gfc_trans_where_2): Likewise. Remove unneeded variables.
832 (gfc_trans_where_3): New function for simple non-dependent WHEREs.
833 (gfc_trans_where): Call gfc_trans_where_3 to translate simple
834 F90-style WHERE statements without internal dependencies.
835 * Make-lang.in (trans-stmt.o): Depend upon dependency.h.
837 2006-02-05 H.J. Lu <hongjiu.lu@intel.com>
841 * resolve.c (resolve_types): New function.
842 (resolve_codes): Likewise.
843 (gfc_resolve): Use them.
845 2006-02-05 Roger Sayle <roger@eyesopen.com>
847 * trans-stmt.c (gfc_evaluate_where_mask): Use LOGICAL*1 for WHERE
848 masks instead of LOGICAL*4.
850 2006-02-05 Jakub Jelinek <jakub@redhat.com>
852 * resolve.c (resolve_symbol): Initialize constructor_expr to NULL.
854 2006-02-04 Thomas Koenig <Thomas.Koenig@online.de>
857 check.c (identical_dimen_shape): New function.
858 (check_dot_product): Use identical_dimen_shape() to check sizes
860 (gfc_check_matmul): Likewise.
861 (gfc_check_merge): Check conformance between tsource and fsource
862 and between tsource and mask.
863 (gfc_check_pack): Check conformance between array and mask.
865 2006-02-03 Steven G. Kargl <kargls@comcast>
866 Paul Thomas <pault@gcc.gnu.org>
869 * resolve.c (resolve_symbol): Default initialization of derived type
870 component reguires the SAVE attribute.
872 2006-02-02 Steven G. Kargl <kargls@comcast>
875 match.c (gfc_match_nullify): Free the list from head not tail.
878 * match.c (match_forall_header): Fix internal error caused by bogus
882 2006-01-31 Thomas Koenig <Thomas.Koenig@online.de>
885 expr.c (gfc_check_conformance): Reorder error message
887 check.c(gfc_check_minloc_maxloc): Call gfc_check_conformance
888 for checking arguments array and mask.
889 (check_reduction): Likewise.
891 2005-01-30 Erik Edelmann <eedelman@gcc.gnu.org>
894 * trans-io.c (set_internal_unit): Check the rank of the
895 expression node itself instead of its symbol.
897 2006-01-29 Paul Thomas <pault@gcc.gnu.org>
903 * interface.c (compare_actual_formal): Error for INTENT(OUT or INOUT)
904 if actual argument is not a variable.
906 2006-01-28 Paul Thomas <pault@gcc.gnu.org>
909 * expr.c (gfc_check_assign, gfc_check_pointer_assign): Emit error if
910 the lvalue is a use associated procedure.
914 * expr.c (gfc_check_pointer_assign): Emit error if lvalue and rvalue
915 character lengths are not the same. Use gfc_dep_compare_expr for the
917 * gfortran.h: Add prototype for gfc_dep_compare_expr.
918 * dependency.h: Remove prototype for gfc_dep_compare_expr.
920 2005-01-27 Paul Thomas <pault@gcc.gnu.org>
923 * resolve.c (resolve_function): Add GFC_ISYM_LOC to the list of
924 generic_ids exempted from assumed size checking.
926 2006-01-27 Jakub Jelinek <jakub@redhat.com>
929 * Make-lang.in (fortran/scanner.o): Depend on toplev.h.
930 * lang.opt (fpreprocessed): New option.
931 * scanner.c: Include toplev.h.
932 (gfc_src_file, gfc_src_preprocessor_lines): New variables.
933 (preprocessor_line): Unescape filename if there were any
935 (load_file): If initial and gfc_src_file is not NULL,
936 use it rather than opening the file. If gfc_src_preprocessor_lines
937 has non-NULL elements, pass it to preprocessor_line.
938 (unescape_filename, gfc_read_orig_filename): New functions.
939 * gfortran.h (gfc_option_t): Add flag_preprocessed.
940 (gfc_read_orig_filename): New prototype.
941 * options.c (gfc_init_options): Clear flag_preprocessed.
942 (gfc_post_options): If flag_preprocessed, call
943 gfc_read_orig_filename.
944 (gfc_handle_option): Handle OPT_fpreprocessed.
945 * lang-specs.h: Pass -fpreprocessed to f951 if preprocessing
948 2005-01-27 Erik Edelmann <eedelman@gcc.gnu.org>
950 * symbol.c (free_old_symbol): Fix confusing comment, and add code
951 to free old_symbol->formal.
953 2005-01-26 Paul Thomas <pault@gcc.gnu.org>
956 * resolve.c (resolve_function): Exclude statement functions from
957 global reference checking.
963 * resolve.c (resolve_function): Declare a gfc_symbol to replace the
964 references through the symtree to the symbol associated with the
965 function expresion. Give error on reference to an assumed character
966 length function is defined in an interface or an external function
967 that is not a dummy argument.
968 (resolve_symbol): Give error if an assumed character length function
969 is array-valued, pointer-valued, pure or recursive. Emit warning
970 that character(*) value functions are obsolescent in F95.
973 * trans-expr.c (gfc_conv_function_call): The above patch to resolve.c
974 prevents any assumed character length function call from getting here
975 except intrinsics such as SPREAD. In this case, ensure that no
976 segfault occurs from referencing non-existent charlen->length->
977 expr_type and provide a backend_decl for the charlen from the charlen
978 of the first actual argument.
980 Cure temp name confusion.
981 * trans-expr.c (gfc_get_interface_mapping_array): Change name of
982 temporary from "parm" to "ifm" to avoid clash with temp coming from
985 2005-01-25 Erik Edelmann <eedelman@gcc.gnu.org>
988 * symbol.c (free_old_symbol): New function.
989 (gfc_commit_symbols): Use it.
990 (gfc_commit_symbol): New function.
991 (gfc_use_derived): Use it.
992 * gfortran.h: Add prototype for gfc_commit_symbol.
993 * intrinsic.c (gfc_find_function): Search in 'conversion'
994 if not found in 'functions'.
995 (gfc_convert_type_warn): Add a symtree to the new
996 expression node, and commit the new symtree->n.sym.
997 * resolve.c (gfc_resolve_index): Make sure typespec is
998 properly initialized.
1000 2005-01-23 Paul Thomas <pault@gcc.gnu.org>
1003 * decl.c (get_proc_name): Replace subroutine and function attributes
1004 in "already defined" test by the formal arglist pointer being non-NULL.
1006 Fix regression in testing of admissability of attributes.
1007 * symbol.c (gfc_add_attribute): If the current_attr has non-zero
1008 intent, do not do the check for a dummy being used.
1009 * decl.c (attr_decl1): Add current_attr.intent as the third argument
1010 in the call to gfc_add_attribute.
1011 * gfortran.h: Add the third argument to the prototype for
1014 2006-01-21 Joseph S. Myers <joseph@codesourcery.com>
1016 * gfortranspec.c (lang_specific_driver): Update copyright notice
1019 2005-01-21 Paul Thomas <pault@gcc.gnu.org>
1023 * decl.c (get_proc_name): If there is an existing
1024 symbol in the encompassing namespace, call errors
1025 if it is a procedure of the same name or the kind
1026 field is set, indicating a type declaration.
1032 * decl.c (add_global_entry): New function to check
1033 for existing global symbol with this name and to
1034 create new one if none exists.
1035 (gfc_match_entry): Call add_global_entry before
1036 matching argument lists for subroutine and function
1038 * gfortran.h: Prototype for existing function,
1040 * resolve.c (resolve_global_procedure): New function
1041 to check global symbols for procedures.
1042 (resolve_call, resolve_function): Calls to this
1043 new function for non-contained and non-module
1045 * match.c (match_common): Add check for existing
1046 global symbol, creat one if none exists and emit
1047 error if there is a clash.
1048 * parse.c (global_used): Remove static and use the
1049 gsymbol name rather than the new_block name, so that
1050 the function can be called from resolve.c.
1051 (parse_block_data, parse_module, add_global_procedure):
1052 Improve checks for existing gsymbols. Emit error if
1053 already defined or if references were to another type.
1057 * trans-expr.c (gfc_conv_aliased_arg): New function called by
1058 gfc_conv_function_call that coverts an expression for an aliased
1059 component reference to a derived type array into a temporary array
1060 of the same type as the component. The temporary is passed as an
1061 actual argument for the procedure call and is copied back to the
1062 derived type after the call.
1063 (is_aliased_array): New function that detects an array reference
1064 that is followed by a component reference.
1065 (gfc_conv_function_call): Detect an aliased actual argument with
1066 is_aliased_array and convert it to a temporary and back again
1067 using gfc_conv_aliased_arg.
1069 2006-01-19 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
1071 * gfortranspec.c: Update copyright years.
1072 * trans.c: Likewise.
1073 * trans-array.c: Likewise.
1074 * trans-array.h: Likewise.
1075 * trans-decl.c: Likewise.
1076 * trans-stmt.c: Likewise.
1077 * trans-stmt.h: Likewise.
1078 * trans-types.c: Likewise.
1080 2006-01-18 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
1084 * gfortran.h (BBT_HEADER): Move definition up.
1085 (gfc_st_label): Add BBT_HEADER, remove 'prev' and 'next'.
1086 * io.c (format_asterisk): Adapt initializer.
1087 * resolve.c (resolve_branch): Allow FORTRAN 66 cross-block GOTOs
1089 (warn_unused_label): Take gfc_st_label label as argument, adapt to
1091 (gfc_resolve): Adapt call to warn_unused_label.
1092 * symbol.c (compare_st_labels): New function.
1093 (gfc_free_st_label, free_st_labels, gfc_get_st_label): Convert to
1094 using balanced binary tree.
1095 * decl.c (match_char_length, gfc_match_old_kind_spec): Do away
1097 (warn_unused_label): Adapt to binary tree.
1098 * match.c (gfc_match_small_literal_int): Only set cnt if non-NULL.
1099 * primary.c (match_kind_param): Do away with cnt.
1101 2006-01-18 Paul Thomas <pault@gcc.gnu.org>
1106 * symbol.c (check_conflict): Add pointer valued elemental
1107 functions and internal procedures with the external attribute
1108 to the list of conflicts.
1109 (gfc_add_attribute): New catch-all function to perform the
1110 checking of symbol attributes for attribute declaration
1112 * decl.c (attr_decl1): Call gfc_add_attribute for each of -
1113 (gfc_match_external, gfc_match_intent, gfc_match_intrinsic,
1114 gfc_match_pointer, gfc_match_dimension, gfc_match_target):
1115 Remove spurious calls to checks in symbol.c. Set the
1116 attribute directly and use the call to attr_decl() for
1118 * gfortran.h: Add prototype for gfc_add_attribute.
1121 * resolve.c (resolve_function): Exclude PRESENT from assumed size
1122 argument checking. Replace strcmp's with comparisons with generic
1125 2006-01-16 Rafael
\81Ávila de Esp
\81índola <rafael.espindola@gmail.com>
1127 * gfortranspec.c (lang_specific_spec_functions): Remove.
1129 2006-01-16 Richard Guenther <rguenther@suse.de>
1131 * trans-stmt.c (gfc_trans_if_1): Use fold_buildN and build_int_cst.
1132 (gfc_trans_arithmetic_if): Likewise.
1133 (gfc_trans_simple_do): Likewise.
1134 (gfc_trans_do): Likewise.
1135 (gfc_trans_do_while): Likewise.
1136 (gfc_trans_logical_select): Likewise.
1137 (gfc_trans_forall_loop): Likewise.
1138 (generate_loop_for_temp_to_lhs): Likewise.
1139 (generate_loop_for_rhs_to_temp): Likewise.
1140 (gfc_trans_allocate): Likewise.
1141 * trans.c (gfc_add_expr_to_block): Do not fold expr again.
1143 2006-01-16 Richard Guenther <rguenther@suse.de>
1145 * trans-expr.c (gfc_conv_function_call): Use fold_build2.
1146 * trans-stmt.c (gfc_trans_goto): Likewise. Use build_int_cst.
1147 * trans.c (gfc_trans_runtime_check): Don't fold the condition
1150 2006-01-13 Steven G. Kargl <kargls@comcast.net>
1153 * symbol.c (gfc_free_st_label): Give variable meaningful name. Remove
1154 unneeded parenthesis. Fix-up the head of the list (2 lines gleaned
1157 2006-01-13 Diego Novillo <dnovillo@redhat.com>
1159 * trans.c (gfc_add_expr_to_block): Do not fold tcc_statement
1162 2006-01-11 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
1164 * parse.c (next_fixed): Remove superfluous string concatenation.
1166 2006-01-11 Bernhard Fischer <rep.nop@aon.at>
1169 * scanner.c (load_line): use maxlen to determine the line-length used
1170 for padding lines in fixed form.
1172 2005-01-11 Paul Thomas <pault@gcc.gnu.org>
1175 * trans-types.c (copy_dt_decls_ifequal): Copy backend decl for
1178 2006-01-09 Andrew Pinski <pinskia@physics.uc.edu>
1181 * trans-stmt.c (gfc_trans_pointer_assign_need_temp): Use fold_convert
1182 to avoid type mismatch.
1184 2006-01-09 Andrew Pinski <pinskia@physics.uc.edu>
1187 * trans-decl.c (gfc_generate_function_code): Move the NULLing of
1188 current_fake_result_decl down to below generate_local_vars.
1190 2006-01-09 Feng Wang <fengwang@nudt.edu.cn>
1193 * trans-expr.c (gfc_to_single_character): New function that converts
1194 string to single character if its length is 1.
1195 (gfc_build_compare_string):New function that compare string and handle
1196 single character specially.
1197 (gfc_conv_expr_op): Use gfc_build_compare_string.
1198 (gfc_trans_string_copy): Use gfc_to_single_character.
1199 * trans-intrinsic.c (gfc_conv_intrinsic_strcmp): Use
1200 gfc_build_compare_string.
1201 * trans.h (gfc_build_compare_string): Add prototype.
1203 2006-01-09 Feng Wang <fengwang@nudt.edu.cn>
1205 * simplify.c (gfc_simplify_char): Use UCHAR_MAX instead of literal
1207 (gfc_simplify_ichar): Get the result from unsinged char and in the
1208 range 0 to UCHAR_MAX instead of CHAR_MIN to CHAR_MAX.
1210 2005-01-08 Erik Edelmann <eedelman@gcc.gnu.org>
1213 * resolve.c (resolve_fntype): Check that PUBLIC functions
1214 aren't of PRIVATE type.
1216 2005-01-07 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de>
1218 * decl.c (gfc_match_function_decl): Correctly error out in case of
1219 omitted function argument list.
1221 2006-01-07 Paul Thomas <pault@gcc.gnu.org>
1224 * trans-array.c (gfc_reverse_ss): Remove static attribute.
1225 (gfc_walk_elemental_function_args): Replace gfc_expr * argument for
1226 the function call with the corresponding gfc_actual_arglist*. Change
1228 (gfc_walk_function_expr): Call to gfc_walk_elemental_function_args
1229 now requires the actual argument list instead of the expression for
1231 * trans-array.h: Modify the prototype for gfc_walk_elemental_function_args
1232 and provide a prototype for gfc_reverse_ss.
1233 * trans-stmt.h (gfc_trans_call): Add the scalarization code for the case
1234 where an elemental subroutine has array valued actual arguments.
1240 * resolve.c (check_assumed_size_reference): New function to check for upper
1241 bound in assumed size array references.
1242 (resolve_assumed_size_actual): New function to do a very restricted scan
1243 of actual argument expressions of those procedures for which incomplete
1244 assumed size array references are not allowed.
1245 (resolve_function, resolve_call): Switch off assumed size checking of
1246 actual arguments, except for elemental procedures and intrinsic
1247 inquiry functions, in some circumstances.
1248 (resolve_variable): Call check_assumed_size_reference.
1250 2006-01-05 Jerry DeLisle <jvdelisle@gcc.gnu.org>
1253 * io.c (next_char_not_space): New function that returns the next
1254 character that is not white space.
1255 (format_lex): Use the new function to skip whitespace within
1258 2006-01-05 Erik Edelmann <eedelman@gcc.gnu.org>
1261 * expr.c (gfc_expr_set_symbols_referenced): New function.
1262 * gfortran.h: Add a function prototype for it.
1263 * resolve.c (resolve_function): Use it for
1264 use associated character functions lengths.
1265 * expr.c, gfortran.h, resolve.c: Updated copyright years.
1267 2006-01-03 Steven G. Kargl <kargls@comcast.net>
1270 * resolve.c (resolve_forall_iterators): Check for scalar variables;
1271 Check stride is nonzero.
1273 2006-01-02 Steven G. Kargl <kargls@comcast.net>
1276 * parse.c (next_free): Check for whitespace after the label.
1277 * match.c (gfc_match_small_literal_int): Initialize cnt variable.
1279 2006-01-01 Steven G. Kargl <kargls@comcast.net>
1281 * ChangeLog: Split previous years into ...
1282 * ChangeLog-2002: here.
1283 * ChangeLog-2003: here.
1284 * ChangeLog-2004: here.
1285 * ChangeLog-2005: here.