1 2006-02-20 Roger Sayle <roger@eyesopen.com>
3 * trans-stmt.c (gfc_trans_where_assign): Remove code to handle
4 traversing a linked list of MASKs. The MASK is now always a
5 single element requiring no ANDing during the assignment.
7 2006-02-19 Thomas Koenig <Thomas.Koenig@online.de>
9 * gfortran.texi: Document environment variables which
10 influence runtime behavior.
12 2006-02-19 H.J. Lu <hongjiu.lu@intel.com>
14 * resolve.c (resolve_contained_functions): Call resolve_entries
16 (resolve_types): Remove calls to resolve_entries and
17 resolve_contained_functions.
18 (gfc_resolve): Call resolve_contained_functions.
20 2006-02-19 Erik Edelmann <eedelman@gcc.gnu.org>
23 * intrinsic.c (gfc_convert_type_warn): Call
24 gfc_intrinsic_symbol() on the newly created symbol.
26 2005-02-19 Paul Thomas <pault@gcc.gnu.org>
29 * resolve.c (is_non_constant_shape_array): New function.
30 (resolve_fl_variable): Remove code for the new function and call it.
31 (resolve_fl_namelist): New function. Add test for namelist array
32 with non-constant shape, using is_non_constant_shape_array.
33 (resolve_symbol): Remove code for resolve_fl_namelist and call it.
36 * match.c (match_namelist): Increment the refs field of an accepted
37 namelist object symbol.
38 * resolve.c (resolve_fl_namelist): Test namelist objects for a conflict
39 with contained or module procedures.
41 2006-02-18 Roger Sayle <roger@eyesopen.com>
43 * trans-stmt.c (struct temporary_list): Delete.
44 (gfc_trans_where_2): Major reorganization. Remove no longer needed
45 TEMP argument. Allocate and deallocate the control mask and
46 pending control mask locally.
47 (gfc_trans_forall_1): Delete TEMP local variable, and update
48 call to gfc_trans_where_2. No need to deallocate arrays after.
49 (gfc_evaluate_where_mask): Major reorganization. Change return
50 type to void. Pass in parent execution mask, MASK, and two
51 already allocated mask arrays CMASK and PMASK. On return
52 CMASK := MASK & COND, PMASK := MASK & !COND. MASK, CMASK and
53 CMASK may all be NULL, or refer to the same temporary arrays.
54 (gfc_trans_where): Update call to gfc_trans_where_2. We no
55 longer need a TEMP variable or to deallocate temporary arrays
56 allocated by gfc_trans_where_2.
58 2006-02-18 Danny Smith <dannysmith@users.sourceforeg.net>
60 * gfortran.h (gfc_add_attribute): Change uint to unsigned int.
61 * symbol.c (gfc_add_attribute): Likewise for definition.
62 * resolve.c (resolve_global_procedure): Likewise for variable 'type'.
64 2006-02-17 Richard Sandiford <richard@codesourcery.com>
66 * trans-common.c: Include rtl.h earlier.
67 * trans-decl.c: Likewise.
69 2006-02-16 Jakub Jelinek <jakub@redhat.com>
72 * parse.c (parse_omp_do, parse_omp_structured_block): Call
73 gfc_commit_symbols and gfc_warning_check.
75 * openmp.c (resolve_omp_clauses): Add a dummy case label to workaround
78 2005-02-16 Paul Thomas <pault@gcc.gnu.org>
81 * trans-expr.c (gfc_add_interface_mapping): Use the actual argument
82 for character(*) arrays, rather than casting to the type and kind
83 parameters of the formal argument.
85 2006-02-15 Toon Moene <toon@moene.indiv.nluug.nl>
88 * options.c: Do not warn for Fortran 2003 features by default.
90 2006-02-15 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
92 * check.c: Update copyright years.
94 * check.c (gfc_check_minloc_maxloc, check_reduction): Don't call
95 dim_range_check on not-present optional dim argument.
97 2006-02-15 Jakub Jelinek <jakub@redhat.com>
101 * Make-lang.in (install-finclude-dir): New goal.
102 (fortran.install-common): Depend on install-finclude-dir.
103 * lang-specs.h: If not -nostdinc, add -I finclude.
105 2006-02-14 Thomas Koenig <Thomas.Koenig@online.de>
108 * check.c (dim_check): Perform all checks if dim is optional.
109 (gfc_check_minloc_maxloc): Use dim_check and dim_rank_check
110 to check dim argument.
111 (check_reduction): Likewise.
113 2006-02-14 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
116 * io.c (match_ltag): Mark label as referenced.
118 2006-02-14 Jakub Jelinek <jakub@redhat.com>
119 Richard Henderson <rth@redhat.com>
120 Diego Novillo <dnovillo@redhat.com>
122 * invoke.texi: Document -fopenmp.
123 * gfortran.texi (Extensions): Document OpenMP.
125 Backport from gomp-20050608-branch
126 * trans-openmp.c: Call build_omp_clause instead of
127 make_node when creating OMP_CLAUSE_* trees.
128 (gfc_trans_omp_reduction_list): Remove argument 'code'.
131 * trans.h (build4_v): Define.
132 * trans-openmp.c: Call build4_v to create OMP_PARALLEL nodes.
133 Call build3_v to create OMP_SECTIONS nodes.
136 * openmp.c (gfc_match_omp_variable_list): Call gfc_set_sym_referenced
137 on all symbols added to the variable list.
139 * openmp.c (gfc_match_omp_clauses): Fix check for non-INTRINSIC
140 procedure symbol in REDUCTION.
142 * trans-openmp.c (gfc_trans_omp_array_reduction): Use gfc_add
143 for MINUS_EXPR OMP_CLAUSE_REDUCTION_CODE.
145 * trans-openmp.c (gfc_trans_omp_do): Add PBLOCK argument. If PBLOCK
146 is non-NULL, evaluate INIT/COND/INCR and chunk size expressions in
147 that statement block.
148 (gfc_trans_omp_parallel_do): Pass non-NULL PBLOCK to gfc_trans_omp_do
149 for non-ordered non-static combined loops.
150 (gfc_trans_omp_directive): Pass NULL PBLOCK to gfc_trans_omp_do.
152 * openmp.c: Include target.h and toplev.h.
153 (gfc_match_omp_threadprivate): Emit diagnostic if target does
155 * Make-lang.in (fortran/openmp.o): Add dependencies on
156 target.h and toplev.h.
158 * trans-decl.c (gfc_get_fake_result_decl): Set GFC_DECL_RESULT.
159 * trans-openmp.c (gfc_omp_privatize_by_reference): Make
160 DECL_ARTIFICIAL vars predetermined shared except GFC_DECL_RESULT.
161 (gfc_omp_disregard_value_expr): Handle GFC_DECL_RESULT.
162 (gfc_trans_omp_variable): New function.
163 (gfc_trans_omp_variable_list, gfc_trans_omp_reduction_list): Use it.
164 * trans.h (GFC_DECL_RESULT): Define.
166 * trans-openmp.c (gfc_omp_firstprivatize_type_sizes): New function.
167 * f95-lang.c (LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES): Define.
168 * trans.h (gfc_omp_firstprivatize_type_sizes): New prototype.
170 * trans-openmp.c (gfc_omp_privatize_by_reference): Return
171 true if a pointer has GFC_DECL_SAVED_DESCRIPTOR set.
172 (gfc_trans_omp_array_reduction, gfc_trans_omp_reduction_list): New
174 (gfc_trans_omp_clauses): Add WHERE argument. Call
175 gfc_trans_omp_reduction_list rather than gfc_trans_omp_variable_list
177 (gfc_trans_omp_do, gfc_trans_omp_parallel, gfc_trans_omp_parallel_do,
178 gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare,
179 gfc_trans_omp_sections, gfc_trans_omp_single): Adjust
180 gfc_trans_omp_clauses callers.
182 * openmp.c (omp_current_do_code): New var.
183 (gfc_resolve_omp_do_blocks): New function.
184 (gfc_resolve_omp_parallel_blocks): Call it.
185 (gfc_resolve_do_iterator): Add CODE argument. Don't propagate
186 predetermination if argument is !$omp do or !$omp parallel do
188 * resolve.c (resolve_code): Call gfc_resolve_omp_do_blocks
189 for EXEC_OMP_DO. Adjust gfc_resolve_do_iterator caller.
190 * fortran.h (gfc_resolve_omp_do_blocks): New prototype.
191 (gfc_resolve_do_iterator): Add CODE argument.
193 * trans.h (gfc_omp_predetermined_sharing,
194 gfc_omp_disregard_value_expr, gfc_omp_private_debug_clause): New
196 (GFC_DECL_COMMON_OR_EQUIV, GFC_DECL_CRAY_POINTEE): Define.
197 * trans-openmp.c (gfc_omp_predetermined_sharing,
198 gfc_omp_disregard_value_expr, gfc_omp_private_debug_clause): New
200 * trans-common.c (build_equiv_decl, build_common_decl,
201 create_common): Set GFC_DECL_COMMON_OR_EQUIV flag on the decls.
202 * trans-decl.c (gfc_finish_cray_pointee): Set GFC_DECL_CRAY_POINTEE
204 * f95-lang.c (LANG_HOOKS_OMP_PREDETERMINED_SHARING,
205 LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR,
206 LANG_HOOKS_OMP_PRIVATE_DEBUG_CLAUSE): Define.
208 * openmp.c (resolve_omp_clauses): Remove extraneous comma.
210 * symbol.c (check_conflict): Add conflict between cray_pointee and
212 * openmp.c (gfc_match_omp_threadprivate): Fail if
213 gfc_add_threadprivate returned FAILURE.
214 (resolve_omp_clauses): Diagnose Cray pointees in SHARED,
215 {,FIRST,LAST}PRIVATE and REDUCTION clauses and Cray pointers in
216 {FIRST,LAST}PRIVATE and REDUCTION clauses.
218 * resolve.c (omp_workshare_flag): New variable.
219 (resolve_function): Diagnose use of non-ELEMENTAL user defined
220 function in WORKSHARE construct.
221 (resolve_code): Cleanup forall_save use. Make sure omp_workshare_flag
222 is set to correct value in different contexts.
224 * openmp.c (resolve_omp_clauses): Replace %s with '%s' when printing
226 (resolve_omp_atomic): Likewise.
229 * scanner.c (skip_free_comments): Set at_bol at the beginning of the
231 (skip_fixed_comments): Handle ! comments in the middle of line here
233 (gfc_skip_comments): Use skip_fixed_comments for FIXED_FORM even if
235 (gfc_next_char_literal): Fix expected canonicalized *$omp string.
237 * trans-openmp.c (gfc_trans_omp_do): Use make_node and explicit
238 initialization to build OMP_FOR instead of build.
240 * trans-decl.c (gfc_gimplify_function): Invoke
241 diagnose_omp_structured_block_errors.
243 * trans-openmp.c (gfc_trans_omp_master): Use OMP_MASTER.
244 (gfc_trans_omp_ordered): Use OMP_ORDERED.
246 * gfortran.h (gfc_resolve_do_iterator, gfc_resolve_blocks,
247 gfc_resolve_omp_parallel_blocks): New prototypes.
248 * resolve.c (resolve_blocks): Renamed to...
249 (gfc_resolve_blocks): ... this. Remove static.
250 (gfc_resolve_forall): Adjust caller.
251 (resolve_code): Only call gfc_resolve_blocks if code->block != 0
252 and not for EXEC_OMP_PARALLEL* directives. Call
253 gfc_resolve_omp_parallel_blocks for EXEC_OMP_PARALLEL* directives.
254 Call gfc_resolve_do_iterator if resolved successfully EXEC_DO
256 * openmp.c: Include pointer-set.h.
257 (omp_current_ctx): New variable.
258 (gfc_resolve_omp_parallel_blocks, gfc_resolve_do_iterator): New
260 * Make-lang.in (fortran/openmp.o): Depend on pointer-set.h.
262 * openmp.c (gfc_match_omp_clauses): For max/min/iand/ior/ieor,
263 look up symbol if it exists, use its name instead and, if it is not
264 INTRINSIC, issue diagnostics.
266 * parse.c (parse_omp_do): Handle implied end do properly.
267 (parse_executable): If parse_omp_do returned ST_IMPLIED_ENDDO,
268 return it instead of continuing.
270 * trans-openmp.c (gfc_trans_omp_critical): Update for changed
272 (gfc_trans_omp_do, gfc_trans_omp_parallel, gfc_trans_omp_parallel_do,
273 gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare,
274 gfc_trans_omp_sections, gfc_trans_omp_single): Likewise.
276 * trans.h (gfc_omp_privatize_by_reference): New prototype.
277 * f95-lang.c (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Redefine
278 to gfc_omp_privatize_by_reference.
279 * trans-openmp.c (gfc_omp_privatize_by_reference): New function.
281 * trans-stmt.h (gfc_trans_omp_directive): Add comment.
283 * openmp.c (gfc_match_omp_variable_list): Add ALLOW_COMMON argument.
284 Disallow COMMON matching if it is set.
285 (gfc_match_omp_clauses, gfc_match_omp_flush): Adjust all callers.
286 (resolve_omp_clauses): Show locus in error messages. Check that
287 variable types in reduction clauses are appropriate for reduction
290 * resolve.c (resolve_symbol): Don't error if a threadprivate module
291 variable isn't SAVEd.
293 * trans-openmp.c (gfc_trans_omp_do): Put count into BLOCK, not BODY.
294 Fix typo in condition. Fix DOVAR initialization.
296 * openmp.c (gfc_match_omp_clauses): Match min/iand/ior/ieor
297 rather than .min. etc.
299 * trans-openmpc.c (omp_not_yet): Remove.
300 (gfc_trans_omp_parallel_do): Keep listprivate clause on parallel.
301 Force creation of BIND_EXPR around the workshare construct.
302 (gfc_trans_omp_parallel_sections): Likewise.
303 (gfc_trans_omp_parallel_workshare): Likewise.
305 * types.def (BT_I16, BT_FN_I16_VPTR_I16,
306 BT_FN_BOOL_VPTR_I16_I16, BT_FN_I16_VPTR_I16_I16): Add.
308 * trans-openmp.c (gfc_trans_omp_clauses): Create OMP_CLAUSE_DEFAULT.
309 (gfc_trans_omp_code): New function.
310 (gfc_trans_omp_do): Use it, remove omp_not_yet uses.
311 (gfc_trans_omp_parallel, gfc_trans_omp_single): Likewise.
312 (gfc_trans_omp_sections): Likewise. Only treat empty last section
313 specially if lastprivate clause is present.
314 * f95-lang.c (gfc_init_builtin_functions): Create BUILT_IN_TRAP
317 * trans-openmp.c (gfc_trans_omp_variable_list): Update for
318 OMP_CLAUSE_DECL name change.
319 (gfc_trans_omp_do): Likewise.
321 * trans-openmp.c (gfc_trans_omp_clauses): Create OMP_CLAUSE_REDUCTION
323 (gfc_trans_omp_atomic): Build OMP_ATOMIC instead of expanding
324 sync builtins directly.
325 (gfc_trans_omp_single): Build OMP_SINGLE statement.
327 * trans-openmp.c (gfc_trans_add_clause): New.
328 (gfc_trans_omp_variable_list): Take a tree code and build the clause
329 node here. Link it to the head of a list.
330 (gfc_trans_omp_clauses): Update to match.
331 (gfc_trans_omp_do): Use gfc_trans_add_clause.
333 * trans-openmp.c (gfc_trans_omp_clauses): Change second argument to
334 gfc_omp_clauses *. Use gfc_evaluate_now instead of creating
336 (gfc_trans_omp_atomic, gfc_trans_omp_critical): Use buildN_v macros.
337 (gfc_trans_omp_do): New function.
338 (gfc_trans_omp_master): Dont' check for gfc_trans_code returning NULL.
339 (gfc_trans_omp_parallel): Adjust gfc_trans_omp_clauses caller.
341 (gfc_trans_omp_parallel_do, gfc_trans_omp_parallel_sections,
342 gfc_trans_omp_parallel_workshare, gfc_trans_omp_sections,
343 gfc_trans_omp_single, gfc_trans_omp_workshare): New functions.
344 (gfc_trans_omp_directive): Use them.
345 * parse.c (parse_omp_do): Allow new_st.op == EXEC_NOP.
346 * openmp.c (resolve_omp_clauses): Check for list items present
348 (resolve_omp_do): Check that iteration variable is not THREADPRIVATE
349 and is not present in any clause variable lists other than PRIVATE
352 * gfortran.h (symbol_attribute): Add threadprivate bit.
353 (gfc_common_head): Add threadprivate member, change use_assoc
354 and saved into char to save space.
355 (gfc_add_threadprivate): New prototype.
356 * symbol.c (check_conflict): Handle threadprivate.
357 (gfc_add_threadprivate): New function.
358 (gfc_copy_attr): Copy threadprivate.
359 * trans-openmp.c (gfc_trans_omp_clauses): Avoid creating a temporary
360 if IF or NUM_THREADS is constant. Create OMP_CLAUSE_SCHEDULE and
362 * resolve.c (resolve_symbol): Complain if a THREADPRIVATE symbol
363 outside a module and not in COMMON has is not SAVEd.
364 (resolve_equivalence): Ensure THREADPRIVATE objects don't get
366 * trans-common.c: Include target.h and rtl.h.
367 (build_common_decl): Set DECL_TLS_MODEL if THREADPRIVATE.
368 * trans-decl.c: Include rtl.h.
369 (gfc_finish_var_decl): Set DECL_TLS_MODEL if THREADPRIVATE.
370 * dump-parse-tree.c (gfc_show_attr): Handle THREADPRIVATE.
371 * Make-lang.in (fortran/trans-decl.o): Depend on $(RTL_H).
372 (fortran/trans-common.o): Depend on $(RTL_H) and $(TARGET_H).
373 * openmp.c (gfc_match_omp_variable_list): Ensure COMMON block
374 is from current namespace.
375 (gfc_match_omp_threadprivate): Rewrite.
376 (resolve_omp_clauses): Check some clause restrictions.
377 * module.c (ab_attribute): Add AB_THREADPRIVATE.
378 (attr_bits): Add THREADPRIVATE.
379 (mio_symbol_attribute, mio_symbol_attribute): Handle threadprivate.
380 (load_commons, write_common, write_blank_common): Adjust for type
381 change of saved, store/load threadprivate bit from the integer
384 * types.def (BT_FN_UINT_UINT): New.
385 (BT_FN_VOID_UINT_UINT): Remove.
387 * trans-openmp.c (gfc_trans_omp_clauses, gfc_trans_omp_barrier,
388 gfc_trans_omp_critical, gfc_trans_omp_flush, gfc_trans_omp_master,
389 gfc_trans_omp_ordered, gfc_trans_omp_parallel): New functions.
390 (gfc_trans_omp_directive): Use them.
392 * openmp.c (expr_references_sym): Add SE argument, don't look
394 (is_conversion): New function.
395 (resolve_omp_atomic): Adjust expr_references_sym callers. Handle
396 promoted expressions.
397 * trans-openmp.c (gfc_trans_omp_atomic): New function.
398 (gfc_trans_omp_directive): Call it.
400 * f95-lang.c (builtin_type_for_size): New function.
401 (gfc_init_builtin_functions): Initialize synchronization and
403 * types.def: New file.
404 * Make-lang.in (f95-lang.o): Depend on $(BUILTINS_DEF) and
407 * trans-openmp.c: Rename GOMP_* tree codes into OMP_*.
409 * dump-parse-tree.c (show_symtree): Don't crash if ns->proc_name
412 * dump-parse-tree.c (gfc_show_namelist, gfc_show_omp_node): New
414 (gfc_show_code_node): Call gfc_show_omp_node for EXEC_OMP_* nodes.
416 * parse.c (parse_omp_do): Call pop_state before next_statement.
417 * openmp.c (expr_references_sym, resolve_omp_atomic, resolve_omp_do):
419 (gfc_resolve_omp_directive): Call them.
420 * match.c (match_exit_cycle): Issue error if EXIT or CYCLE statement
421 leaves an OpenMP structured block or if EXIT terminates !$omp do
424 * Make-lang.in (F95_PARSER_OBJS): Add fortran/openmp.o.
425 (F95_OBJS): Add fortran/trans-openmp.o.
426 (fortran/trans-openmp.o): Depend on $(GFORTRAN_TRANS_DEPS).
427 * lang.opt: Add -fopenmp option.
428 * options.c (gfc_init_options): Initialize it.
429 (gfc_handle_option): Handle it.
430 * gfortran.h (ST_OMP_ATOMIC, ST_OMP_BARRIER, ST_OMP_CRITICAL,
431 ST_OMP_END_CRITICAL, ST_OMP_END_DO, ST_OMP_END_MASTER,
432 ST_OMP_END_ORDERED, ST_OMP_END_PARALLEL, ST_OMP_END_PARALLEL_DO,
433 ST_OMP_END_PARALLEL_SECTIONS, ST_OMP_END_PARALLEL_WORKSHARE,
434 ST_OMP_END_SECTIONS, ST_OMP_END_SINGLE, ST_OMP_END_WORKSHARE,
435 ST_OMP_DO, ST_OMP_FLUSH, ST_OMP_MASTER, ST_OMP_ORDERED,
436 ST_OMP_PARALLEL, ST_OMP_PARALLEL_DO, ST_OMP_PARALLEL_SECTIONS,
437 ST_OMP_PARALLEL_WORKSHARE, ST_OMP_SECTIONS, ST_OMP_SECTION,
438 ST_OMP_SINGLE, ST_OMP_THREADPRIVATE, ST_OMP_WORKSHARE): New
440 (OMP_LIST_PRIVATE, OMP_LIST_FIRSTPRIVATE, OMP_LIST_LASTPRIVATE,
441 OMP_LIST_COPYPRIVATE, OMP_LIST_SHARED, OMP_LIST_COPYIN,
442 OMP_LIST_PLUS, OMP_LIST_REDUCTION_FIRST, OMP_LIST_MULT,
443 OMP_LIST_SUB, OMP_LIST_AND, OMP_LIST_OR, OMP_LIST_EQV,
444 OMP_LIST_NEQV, OMP_LIST_MAX, OMP_LIST_MIN, OMP_LIST_IAND,
445 OMP_LIST_IOR, OMP_LIST_IEOR, OMP_LIST_REDUCTION_LAST, OMP_LIST_NUM):
446 New OpenMP variable list types.
447 (gfc_omp_clauses): New typedef.
448 (gfc_get_omp_clauses): Define.
449 (EXEC_OMP_CRITICAL, EXEC_OMP_DO, EXEC_OMP_FLUSH, EXEC_OMP_MASTER,
450 EXEC_OMP_ORDERED, EXEC_OMP_PARALLEL, EXEC_OMP_PARALLEL_DO,
451 EXEC_OMP_PARALLEL_SECTIONS, EXEC_OMP_PARALLEL_WORKSHARE,
452 EXEC_OMP_SECTIONS, EXEC_OMP_SINGLE, EXEC_OMP_WORKSHARE,
453 EXEC_OMP_ATOMIC, EXEC_OMP_BARRIER, EXEC_OMP_END_NOWAIT,
454 EXEC_OMP_END_SINGLE): New OpenMP gfc_exec_op codes.
455 (struct gfc_code): Add omp_clauses, omp_name, omp_namelist
456 and omp_bool fields to ext union.
457 (flag_openmp): Declare.
458 (gfc_free_omp_clauses, gfc_resolve_omp_directive): New prototypes.
459 * scanner.c (openmp_flag, openmp_locus): New variables.
460 (skip_free_comments, skip_fixed_comments, gfc_next_char_literal):
461 Handle OpenMP directive lines and conditional compilation magic
463 * parse.h (COMP_OMP_STRUCTURED_BLOCK): New compile state.
464 * parse.c (decode_omp_directive, parse_omp_do, parse_omp_atomic,
465 parse_omp_structured_block): New functions.
466 (next_free, next_fixed): Parse OpenMP directives.
467 (case_executable, case_exec_markers, case_decl): Add ST_OMP_*
469 (gfc_ascii_statement): Handle ST_OMP_* codes.
470 (parse_executable): Rearrange the loop slightly, so that
471 parse_omp_do can return next_statement.
472 * match.h (gfc_match_omp_eos, gfc_match_omp_atomic,
473 gfc_match_omp_barrier, gfc_match_omp_critical, gfc_match_omp_do,
474 gfc_match_omp_flush, gfc_match_omp_master, gfc_match_omp_ordered,
475 gfc_match_omp_parallel, gfc_match_omp_parallel_do,
476 gfc_match_omp_parallel_sections, gfc_match_omp_parallel_workshare,
477 gfc_match_omp_sections, gfc_match_omp_single,
478 gfc_match_omp_threadprivate, gfc_match_omp_workshare,
479 gfc_match_omp_end_nowait, gfc_match_omp_end_single): New prototypes.
480 * resolve.c (resolve_blocks): Ignore EXEC_OMP_* block directives.
481 (resolve_code): Call gfc_resolve_omp_directive on EXEC_OMP_*
483 * trans.c (gfc_trans_code): Call gfc_trans_omp_directive for
484 EXEC_OMP_* directives.
485 * st.c (gfc_free_statement): Handle EXEC_OMP_* statement freeing.
486 * trans-stmt.h (gfc_trans_omp_directive): New prototype.
487 * openmp.c: New file.
488 * trans-openmp.c: New file.
490 2006-02-13 Andrew Pinski <pinskia@physics.uc.edu>
491 Jakub Jelinek <jakub@redhat.com>
494 * trans-decl.c (gfc_get_symbol_decl, gfc_get_fake_result_decl): Use
495 gfc_add_decl_to_function rather than gfc_finish_var_decl on length.
497 2006-02-13 Paul Thomas <pault@gcc.gnu.org>
501 * resolve.c (resolve_symbol): Extend the requirement that module
502 arrays have constant bounds to those in the main program. At the
503 same time simplify the array bounds, to avoiding trapping parameter
504 array references, and exclude automatic character length from main
505 and modules. Rearrange resolve_symbol and resolve_derived to put as
506 each flavor together, as much as is possible and move all specific
507 code for flavors FL_VARIABLE, FL_PROCEDURE and FL_PARAMETER into new
509 (resolve_fl_var_and_proc, resolve_fl_variable, resolve_fl_procedure):
510 New functions to do work of resolve_symbol.
511 (resolve_index_expr): New function that is called from resolved_symbol
512 and is extracted from resolve_charlen.
513 (resolve_charlen): Call this new function.
514 (resolve_fl_derived): Renamed resolve_derived to be consistent with
515 the naming of the new functions for the other flavours. Change the
516 charlen checking so that the style is consistent with other similar
517 checks. Add the generation of the gfc_dt_list, removed from resolve_
521 * resolve.c (resolve_actual_arglist): Prevent internal procedures
522 from being dummy arguments.
525 * resolve.c (resolve_actual_arglist): Prevent pure but non-intrinsic
526 procedures from being dummy arguments.
529 * resolve.c (check_data_variable): Add test that data variable is in
533 * resolve.c (resolve_call): Add test that the subroutine does not
536 2006-02-12 Erik Edelmann <eedelman@gcc.gnu.org>
539 * trans-array.c (gfc_trans_allocate_array_storage): New argument
540 dealloc; free the temporary only if dealloc is true.
541 (gfc_trans_allocate_temp_array): New argument bool dealloc, to be
542 passed onwards to gfc_trans_allocate_array_storage.
543 (gfc_trans_array_constructor, gfc_conv_loop_setup): Update call to
544 gfc_trans_allocate_temp_array.
545 * trans-array.h (gfc_trans_allocate_temp_array): Update function
547 * trans-expr.c (gfc_conv_function_call): Set new argument 'dealloc'
548 to gfc_trans_allocate_temp_array to false in case of functions
550 (gfc_trans_arrayfunc_assign): Return NULL for functions returning
553 2006-02-10 Steven G. Kargl <kargls@comcast.net>
556 *decl.c (variable_decl): Improve error message. Remove initialization
557 typespec. Wrap long line.
558 *expr.c (gfc_check_pointer_assign): Permit checking of type, kind type,
560 *simplify.c (gfc_simplify_null): Ensure type, kind type, and rank
564 2006-02-10 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
567 * arith.c (eval_intrinsic): Accept INTRINSIC_PARENTHESES.
568 * expr.c (check_intrinsic_op): Likewise.
569 * module.c (mio_expr): Likewise.
571 2006-02-09 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
573 * dump-parse-tree.c: Update copyright years.
574 * matchexp.c: Likewise.
575 * module.c: Likewise.
578 * gfortran.h (gfc_intrinsic_op): Add INTRINSIC_PARENTHESES.
579 * dump-parse-tree (gfc_show_expr): Handle INTRINSIC_PARENTHESES.
580 * expr.c (simplify_intrinsic_op): Treat INTRINSIC_PARENTHESES as
581 if it were INTRINSIC_UPLUS.
582 * resolve.c (resolve_operator): Handle INTRINSIC_PARENTHESES.
583 * match.c (intrinsic_operators): Add INTRINSIC_PARENTHESES.
584 * matchexp.c (match_primary): Record parentheses surrounding
586 * module.c (intrinsics): Add INTRINSIC_PARENTHESES for module
588 * trans-expr.c (gfc_conv_expr_op): Handle INTRINSIC_PARENTHESES.
590 2006-02-09 Paul Thomas <pault@gcc.gnu.org>
593 * trans-stmt.c (gfc_trans_allocate): Provide assumed character length
594 scalar with missing backend_decl for the hidden dummy charlen.
597 * interface.c (gfc_extend_assign): Remove detection of non-PURE
598 subroutine in assignment interface, with gfc_error, and put it in
599 * resolve.c (resolve_code).
602 * interface.c (gfc_procedure_use): Flag rank checking for non-
603 elemental, contained or interface procedures in call to
604 (compare_actual_formal), where ranks are checked for assumed
607 2006-02-08 Francois-Xavier Coudert <coudert@clipper.ens.fr>
610 * trans-decl.c (gfc_generate_function_code): Add new argument,
611 pedantic, to set_std call.
613 2005-02-06 Thomas Koenig <Thomas.Koenig@online.de>
616 * gfortran.texi: Document the GFORTRAN_CONVERT_UNIT environment
618 * invoke.texi: Mention the "Runtime" chapter.
619 Document the -fconvert= option.
620 * gfortran.h: Add options_convert.
621 * lang.opt: Add fconvert=little-endian, fconvert=big-endian,
622 fconvert=native and fconvert=swap.
623 * trans-decl.c (top level): Add gfor_fndecl_set_convert.
624 (gfc_build_builtin_function_decls): Set gfor_fndecl_set_convert.
625 (gfc_generate_function_code): If -fconvert was specified,
626 and this is the main program, add a call to set_convert().
627 * options.c: Handle the -fconvert options.
629 2006-02-06 Roger Sayle <roger@eyesopen.com>
631 * trans-stmt.c (gfc_evaluate_where_mask): Allow the NMASK argument
632 to be NULL to indicate that the not mask isn't required.
633 (gfc_trans_where_2): Remove PMASK argument. Avoid calculating the
634 pending mask for the last clause of a WHERE chain. Update recursive
636 (gfc_trans_forall_1): Update call to gfc_trans_where_2.
637 (gfc_trans_where): Likewise.
639 2006-02-06 Jakub Jelinek <jakub@redhat.com>
641 Backport from gomp-20050608-branch
642 * trans-decl.c (create_function_arglist): Handle dummy functions.
644 * trans-decl.c (gfc_get_symbol_decl): Revert explicit setting of
646 (gfc_trans_vla_type_sizes): Also "gimplify"
647 GFC_TYPE_ARRAY_DATAPTR_TYPE for GFC_DESCRIPTOR_TYPE_P types.
648 * trans-array.c (gfc_trans_deferred_array): Call
649 gfc_trans_vla_type_sizes.
651 * trans-decl.c (saved_function_decls, saved_parent_function_decls):
652 Remove unnecessary initialization.
653 (create_function_arglist): Make sure __result has complete type.
654 (gfc_get_fake_result_decl): Change current_fake_result_decl into
655 a tree chain. For entry master, create a separate variable
656 for each result name. For BT_CHARACTER results, call
657 gfc_finish_var_decl on length even if it has been already created,
659 (gfc_trans_vla_type_sizes): For function/entry result, adjust
660 result value type, not the FUNCTION_TYPE.
661 (gfc_generate_function_code): Adjust for current_fake_result_decl
663 (gfc_trans_deferred_vars): Likewise. Call gfc_trans_vla_type_sizes
664 even on result if it is assumed-length character.
666 * trans-decl.c (gfc_trans_dummy_character): Add SYM argument.
667 Call gfc_trans_vla_type_sizes.
668 (gfc_trans_auto_character_variable): Call gfc_trans_vla_type_sizes.
669 (gfc_trans_vla_one_sizepos, gfc_trans_vla_type_sizes_1,
670 gfc_trans_vla_type_sizes): New functions.
671 (gfc_trans_deferred_vars): Adjust gfc_trans_dummy_character
672 callers. Call gfc_trans_vla_type_sizes on assumed-length
673 character parameters.
674 * trans-array.c (gfc_trans_array_bounds,
675 gfc_trans_auto_array_allocation, gfc_trans_dummy_array_bias): Call
676 gfc_trans_vla_type_sizes.
677 * trans.h (gfc_trans_vla_type_sizes): New prototype.
679 * trans-decl.c (gfc_build_qualified_array): For non-assumed-size
680 arrays without constant size, create also an index var for
681 GFC_TYPE_ARRAY_SIZE (type). If the type is incomplete, complete
683 (gfc_create_string_length): Don't call gfc_defer_symbol_init
684 if just creating DECL_ARGUMENTS.
685 (gfc_get_symbol_decl): Call gfc_finish_var_decl and
686 gfc_defer_symbol_init even if ts.cl->backend_decl is already
687 set to a VAR_DECL that doesn't have DECL_CONTEXT yet.
688 (create_function_arglist): Rework, so that hidden length
689 arguments for CHARACTER parameters are created together with
690 the parameters. Resolve ts.cl->backend_decl for CHARACTER
691 parameters. If the argument is a non-constant length array
692 or CHARACTER, ensure PARM_DECL has different type than
694 (generate_local_decl): Call gfc_get_symbol_decl even
695 for non-referenced non-constant length CHARACTER parameters
696 after optionally issuing warnings.
697 * trans-array.c (gfc_trans_array_bounds): Set last stride
698 to GFC_TYPE_ARRAY_SIZE (type) to initialize it as well.
699 (gfc_trans_dummy_array_bias): Initialize GFC_TYPE_ARRAY_SIZE (type)
702 * trans-expr.c (gfc_conv_expr_val): Fix comment typo.
704 * trans-stmt.c (gfc_trans_simple_do): Fix comment.
706 2006-02-04 Roger Sayle <roger@eyesopen.com>
708 * dependency.c (gfc_check_dependency): Remove unused vars and nvars
709 arguments. Replace with an "identical" argument. A full array
710 reference to the same symbol is a dependency if identical is true.
711 * dependency.h (gfc_check_dependency): Update prototype.
712 * trans-array.h (gfc_check_dependency): Delete duplicate prototype.
713 * trans-stmt.c: #include dependency.h for gfc_check_dependency.
714 (gfc_trans_forall_1): Update calls to gfc_check_dependency.
715 (gfc_trans_where_2): Likewise. Remove unneeded variables.
716 (gfc_trans_where_3): New function for simple non-dependent WHEREs.
717 (gfc_trans_where): Call gfc_trans_where_3 to translate simple
718 F90-style WHERE statements without internal dependencies.
719 * Make-lang.in (trans-stmt.o): Depend upon dependency.h.
721 2006-02-05 H.J. Lu <hongjiu.lu@intel.com>
725 * resolve.c (resolve_types): New function.
726 (resolve_codes): Likewise.
727 (gfc_resolve): Use them.
729 2006-02-05 Roger Sayle <roger@eyesopen.com>
731 * trans-stmt.c (gfc_evaluate_where_mask): Use LOGICAL*1 for WHERE
732 masks instead of LOGICAL*4.
734 2006-02-05 Jakub Jelinek <jakub@redhat.com>
736 * resolve.c (resolve_symbol): Initialize constructor_expr to NULL.
738 2006-02-04 Thomas Koenig <Thomas.Koenig@online.de>
741 check.c (identical_dimen_shape): New function.
742 (check_dot_product): Use identical_dimen_shape() to check sizes
744 (gfc_check_matmul): Likewise.
745 (gfc_check_merge): Check conformance between tsource and fsource
746 and between tsource and mask.
747 (gfc_check_pack): Check conformance between array and mask.
749 2006-02-03 Steven G. Kargl <kargls@comcast>
750 Paul Thomas <pault@gcc.gnu.org>
753 * resolve.c (resolve_symbol): Default initialization of derived type
754 component reguires the SAVE attribute.
756 2006-02-02 Steven G. Kargl <kargls@comcast>
759 match.c (gfc_match_nullify): Free the list from head not tail.
762 * match.c (match_forall_header): Fix internal error caused by bogus
766 2006-01-31 Thomas Koenig <Thomas.Koenig@online.de>
769 expr.c (gfc_check_conformance): Reorder error message
771 check.c(gfc_check_minloc_maxloc): Call gfc_check_conformance
772 for checking arguments array and mask.
773 (check_reduction): Likewise.
775 2005-01-30 Erik Edelmann <eedelman@gcc.gnu.org>
778 * trans-io.c (set_internal_unit): Check the rank of the
779 expression node itself instead of its symbol.
781 2006-01-29 Paul Thomas <pault@gcc.gnu.org>
787 * interface.c (compare_actual_formal): Error for INTENT(OUT or INOUT)
788 if actual argument is not a variable.
790 2006-01-28 Paul Thomas <pault@gcc.gnu.org>
793 * expr.c (gfc_check_assign, gfc_check_pointer_assign): Emit error if
794 the lvalue is a use associated procedure.
798 * expr.c (gfc_check_pointer_assign): Emit error if lvalue and rvalue
799 character lengths are not the same. Use gfc_dep_compare_expr for the
801 * gfortran.h: Add prototype for gfc_dep_compare_expr.
802 * dependency.h: Remove prototype for gfc_dep_compare_expr.
804 2005-01-27 Paul Thomas <pault@gcc.gnu.org>
807 * resolve.c (resolve_function): Add GFC_ISYM_LOC to the list of
808 generic_ids exempted from assumed size checking.
810 2006-01-27 Jakub Jelinek <jakub@redhat.com>
813 * Make-lang.in (fortran/scanner.o): Depend on toplev.h.
814 * lang.opt (fpreprocessed): New option.
815 * scanner.c: Include toplev.h.
816 (gfc_src_file, gfc_src_preprocessor_lines): New variables.
817 (preprocessor_line): Unescape filename if there were any
819 (load_file): If initial and gfc_src_file is not NULL,
820 use it rather than opening the file. If gfc_src_preprocessor_lines
821 has non-NULL elements, pass it to preprocessor_line.
822 (unescape_filename, gfc_read_orig_filename): New functions.
823 * gfortran.h (gfc_option_t): Add flag_preprocessed.
824 (gfc_read_orig_filename): New prototype.
825 * options.c (gfc_init_options): Clear flag_preprocessed.
826 (gfc_post_options): If flag_preprocessed, call
827 gfc_read_orig_filename.
828 (gfc_handle_option): Handle OPT_fpreprocessed.
829 * lang-specs.h: Pass -fpreprocessed to f951 if preprocessing
832 2005-01-27 Erik Edelmann <eedelman@gcc.gnu.org>
834 * symbol.c (free_old_symbol): Fix confusing comment, and add code
835 to free old_symbol->formal.
837 2005-01-26 Paul Thomas <pault@gcc.gnu.org>
840 * resolve.c (resolve_function): Exclude statement functions from
841 global reference checking.
847 * resolve.c (resolve_function): Declare a gfc_symbol to replace the
848 references through the symtree to the symbol associated with the
849 function expresion. Give error on reference to an assumed character
850 length function is defined in an interface or an external function
851 that is not a dummy argument.
852 (resolve_symbol): Give error if an assumed character length function
853 is array-valued, pointer-valued, pure or recursive. Emit warning
854 that character(*) value functions are obsolescent in F95.
857 * trans-expr.c (gfc_conv_function_call): The above patch to resolve.c
858 prevents any assumed character length function call from getting here
859 except intrinsics such as SPREAD. In this case, ensure that no
860 segfault occurs from referencing non-existent charlen->length->
861 expr_type and provide a backend_decl for the charlen from the charlen
862 of the first actual argument.
864 Cure temp name confusion.
865 * trans-expr.c (gfc_get_interface_mapping_array): Change name of
866 temporary from "parm" to "ifm" to avoid clash with temp coming from
869 2005-01-25 Erik Edelmann <eedelman@gcc.gnu.org>
872 * symbol.c (free_old_symbol): New function.
873 (gfc_commit_symbols): Use it.
874 (gfc_commit_symbol): New function.
875 (gfc_use_derived): Use it.
876 * gfortran.h: Add prototype for gfc_commit_symbol.
877 * intrinsic.c (gfc_find_function): Search in 'conversion'
878 if not found in 'functions'.
879 (gfc_convert_type_warn): Add a symtree to the new
880 expression node, and commit the new symtree->n.sym.
881 * resolve.c (gfc_resolve_index): Make sure typespec is
882 properly initialized.
884 2005-01-23 Paul Thomas <pault@gcc.gnu.org>
887 * decl.c (get_proc_name): Replace subroutine and function attributes
888 in "already defined" test by the formal arglist pointer being non-NULL.
890 Fix regression in testing of admissability of attributes.
891 * symbol.c (gfc_add_attribute): If the current_attr has non-zero
892 intent, do not do the check for a dummy being used.
893 * decl.c (attr_decl1): Add current_attr.intent as the third argument
894 in the call to gfc_add_attribute.
895 * gfortran.h: Add the third argument to the prototype for
898 2006-01-21 Joseph S. Myers <joseph@codesourcery.com>
900 * gfortranspec.c (lang_specific_driver): Update copyright notice
903 2005-01-21 Paul Thomas <pault@gcc.gnu.org>
907 * decl.c (get_proc_name): If there is an existing
908 symbol in the encompassing namespace, call errors
909 if it is a procedure of the same name or the kind
910 field is set, indicating a type declaration.
916 * decl.c (add_global_entry): New function to check
917 for existing global symbol with this name and to
918 create new one if none exists.
919 (gfc_match_entry): Call add_global_entry before
920 matching argument lists for subroutine and function
922 * gfortran.h: Prototype for existing function,
924 * resolve.c (resolve_global_procedure): New function
925 to check global symbols for procedures.
926 (resolve_call, resolve_function): Calls to this
927 new function for non-contained and non-module
929 * match.c (match_common): Add check for existing
930 global symbol, creat one if none exists and emit
931 error if there is a clash.
932 * parse.c (global_used): Remove static and use the
933 gsymbol name rather than the new_block name, so that
934 the function can be called from resolve.c.
935 (parse_block_data, parse_module, add_global_procedure):
936 Improve checks for existing gsymbols. Emit error if
937 already defined or if references were to another type.
941 * trans-expr.c (gfc_conv_aliased_arg): New function called by
942 gfc_conv_function_call that coverts an expression for an aliased
943 component reference to a derived type array into a temporary array
944 of the same type as the component. The temporary is passed as an
945 actual argument for the procedure call and is copied back to the
946 derived type after the call.
947 (is_aliased_array): New function that detects an array reference
948 that is followed by a component reference.
949 (gfc_conv_function_call): Detect an aliased actual argument with
950 is_aliased_array and convert it to a temporary and back again
951 using gfc_conv_aliased_arg.
953 2006-01-19 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
955 * gfortranspec.c: Update copyright years.
957 * trans-array.c: Likewise.
958 * trans-array.h: Likewise.
959 * trans-decl.c: Likewise.
960 * trans-stmt.c: Likewise.
961 * trans-stmt.h: Likewise.
962 * trans-types.c: Likewise.
964 2006-01-18 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
968 * gfortran.h (BBT_HEADER): Move definition up.
969 (gfc_st_label): Add BBT_HEADER, remove 'prev' and 'next'.
970 * io.c (format_asterisk): Adapt initializer.
971 * resolve.c (resolve_branch): Allow FORTRAN 66 cross-block GOTOs
973 (warn_unused_label): Take gfc_st_label label as argument, adapt to
975 (gfc_resolve): Adapt call to warn_unused_label.
976 * symbol.c (compare_st_labels): New function.
977 (gfc_free_st_label, free_st_labels, gfc_get_st_label): Convert to
978 using balanced binary tree.
979 * decl.c (match_char_length, gfc_match_old_kind_spec): Do away
981 (warn_unused_label): Adapt to binary tree.
982 * match.c (gfc_match_small_literal_int): Only set cnt if non-NULL.
983 * primary.c (match_kind_param): Do away with cnt.
985 2006-01-18 Paul Thomas <pault@gcc.gnu.org>
990 * symbol.c (check_conflict): Add pointer valued elemental
991 functions and internal procedures with the external attribute
992 to the list of conflicts.
993 (gfc_add_attribute): New catch-all function to perform the
994 checking of symbol attributes for attribute declaration
996 * decl.c (attr_decl1): Call gfc_add_attribute for each of -
997 (gfc_match_external, gfc_match_intent, gfc_match_intrinsic,
998 gfc_match_pointer, gfc_match_dimension, gfc_match_target):
999 Remove spurious calls to checks in symbol.c. Set the
1000 attribute directly and use the call to attr_decl() for
1002 * gfortran.h: Add prototype for gfc_add_attribute.
1005 * resolve.c (resolve_function): Exclude PRESENT from assumed size
1006 argument checking. Replace strcmp's with comparisons with generic
1009 2006-01-16 Rafael
\81Ávila de Esp
\81índola <rafael.espindola@gmail.com>
1011 * gfortranspec.c (lang_specific_spec_functions): Remove.
1013 2006-01-16 Richard Guenther <rguenther@suse.de>
1015 * trans-stmt.c (gfc_trans_if_1): Use fold_buildN and build_int_cst.
1016 (gfc_trans_arithmetic_if): Likewise.
1017 (gfc_trans_simple_do): Likewise.
1018 (gfc_trans_do): Likewise.
1019 (gfc_trans_do_while): Likewise.
1020 (gfc_trans_logical_select): Likewise.
1021 (gfc_trans_forall_loop): Likewise.
1022 (generate_loop_for_temp_to_lhs): Likewise.
1023 (generate_loop_for_rhs_to_temp): Likewise.
1024 (gfc_trans_allocate): Likewise.
1025 * trans.c (gfc_add_expr_to_block): Do not fold expr again.
1027 2006-01-16 Richard Guenther <rguenther@suse.de>
1029 * trans-expr.c (gfc_conv_function_call): Use fold_build2.
1030 * trans-stmt.c (gfc_trans_goto): Likewise. Use build_int_cst.
1031 * trans.c (gfc_trans_runtime_check): Don't fold the condition
1034 2006-01-13 Steven G. Kargl <kargls@comcast.net>
1037 * symbol.c (gfc_free_st_label): Give variable meaningful name. Remove
1038 unneeded parenthesis. Fix-up the head of the list (2 lines gleaned
1041 2006-01-13 Diego Novillo <dnovillo@redhat.com>
1043 * trans.c (gfc_add_expr_to_block): Do not fold tcc_statement
1046 2006-01-11 Tobias Schl
\81üter <tobias.schlueter@physik.uni-muenchen.de>
1048 * parse.c (next_fixed): Remove superfluous string concatenation.
1050 2006-01-11 Bernhard Fischer <rep.nop@aon.at>
1053 * scanner.c (load_line): use maxlen to determine the line-length used
1054 for padding lines in fixed form.
1056 2005-01-11 Paul Thomas <pault@gcc.gnu.org>
1059 * trans-types.c (copy_dt_decls_ifequal): Copy backend decl for
1062 2006-01-09 Andrew Pinski <pinskia@physics.uc.edu>
1065 * trans-stmt.c (gfc_trans_pointer_assign_need_temp): Use fold_convert
1066 to avoid type mismatch.
1068 2006-01-09 Andrew Pinski <pinskia@physics.uc.edu>
1071 * trans-decl.c (gfc_generate_function_code): Move the NULLing of
1072 current_fake_result_decl down to below generate_local_vars.
1074 2006-01-09 Feng Wang <fengwang@nudt.edu.cn>
1077 * trans-expr.c (gfc_to_single_character): New function that converts
1078 string to single character if its length is 1.
1079 (gfc_build_compare_string):New function that compare string and handle
1080 single character specially.
1081 (gfc_conv_expr_op): Use gfc_build_compare_string.
1082 (gfc_trans_string_copy): Use gfc_to_single_character.
1083 * trans-intrinsic.c (gfc_conv_intrinsic_strcmp): Use
1084 gfc_build_compare_string.
1085 * trans.h (gfc_build_compare_string): Add prototype.
1087 2006-01-09 Feng Wang <fengwang@nudt.edu.cn>
1089 * simplify.c (gfc_simplify_char): Use UCHAR_MAX instead of literal
1091 (gfc_simplify_ichar): Get the result from unsinged char and in the
1092 range 0 to UCHAR_MAX instead of CHAR_MIN to CHAR_MAX.
1094 2005-01-08 Erik Edelmann <eedelman@gcc.gnu.org>
1097 * resolve.c (resolve_fntype): Check that PUBLIC functions
1098 aren't of PRIVATE type.
1100 2005-01-07 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de>
1102 * decl.c (gfc_match_function_decl): Correctly error out in case of
1103 omitted function argument list.
1105 2006-01-07 Paul Thomas <pault@gcc.gnu.org>
1108 * trans-array.c (gfc_reverse_ss): Remove static attribute.
1109 (gfc_walk_elemental_function_args): Replace gfc_expr * argument for
1110 the function call with the corresponding gfc_actual_arglist*. Change
1112 (gfc_walk_function_expr): Call to gfc_walk_elemental_function_args
1113 now requires the actual argument list instead of the expression for
1115 * trans-array.h: Modify the prototype for gfc_walk_elemental_function_args
1116 and provide a prototype for gfc_reverse_ss.
1117 * trans-stmt.h (gfc_trans_call): Add the scalarization code for the case
1118 where an elemental subroutine has array valued actual arguments.
1124 * resolve.c (check_assumed_size_reference): New function to check for upper
1125 bound in assumed size array references.
1126 (resolve_assumed_size_actual): New function to do a very restricted scan
1127 of actual argument expressions of those procedures for which incomplete
1128 assumed size array references are not allowed.
1129 (resolve_function, resolve_call): Switch off assumed size checking of
1130 actual arguments, except for elemental procedures and intrinsic
1131 inquiry functions, in some circumstances.
1132 (resolve_variable): Call check_assumed_size_reference.
1134 2006-01-05 Jerry DeLisle <jvdelisle@gcc.gnu.org>
1137 * io.c (next_char_not_space): New function that returns the next
1138 character that is not white space.
1139 (format_lex): Use the new function to skip whitespace within
1142 2006-01-05 Erik Edelmann <eedelman@gcc.gnu.org>
1145 * expr.c (gfc_expr_set_symbols_referenced): New function.
1146 * gfortran.h: Add a function prototype for it.
1147 * resolve.c (resolve_function): Use it for
1148 use associated character functions lengths.
1149 * expr.c, gfortran.h, resolve.c: Updated copyright years.
1151 2006-01-03 Steven G. Kargl <kargls@comcast.net>
1154 * resolve.c (resolve_forall_iterators): Check for scalar variables;
1155 Check stride is nonzero.
1157 2006-01-02 Steven G. Kargl <kargls@comcast.net>
1160 * parse.c (next_free): Check for whitespace after the label.
1161 * match.c (gfc_match_small_literal_int): Initialize cnt variable.
1163 2006-01-01 Steven G. Kargl <kargls@comcast.net>
1165 * ChangeLog: Split previous years into ...
1166 * ChangeLog-2002: here.
1167 * ChangeLog-2003: here.
1168 * ChangeLog-2004: here.
1169 * ChangeLog-2005: here.