Merge from mainline
[official-gcc.git] / gcc / fortran / ChangeLog
blob0755ee768381992f8e1f8c19c55454e3bf1c4e56
1 2005-02-16  Paul Thomas  <pault@gcc.gnu.org>
3         PR fortran/24557
4         * trans-expr.c (gfc_add_interface_mapping): Use the actual argument
5         for character(*) arrays, rather than casting to the type and kind
6         parameters of the formal argument.
8 2006-02-15  Toon Moene  <toon@moene.indiv.nluug.nl>
10         PR fortran/26054
11         * options.c: Do not warn for Fortran 2003 features by default.
13 2006-02-15  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
15         * check.c: Update copyright years.
16         
17         * check.c (gfc_check_minloc_maxloc, check_reduction): Don't call
18         dim_range_check on not-present optional dim argument.
20 2006-02-15  Jakub Jelinek  <jakub@redhat.com>
22         PR libgomp/25938
23         PR libgomp/25984
24         * Make-lang.in (install-finclude-dir): New goal.
25         (fortran.install-common): Depend on install-finclude-dir.
26         * lang-specs.h: If not -nostdinc, add -I finclude.
28 2006-02-14  Thomas Koenig  <Thomas.Koenig@online.de>
30         PR fortran/25045
31         * check.c (dim_check):  Perform all checks if dim is optional.
32         (gfc_check_minloc_maxloc):  Use dim_check and dim_rank_check
33         to check dim argument.
34         (check_reduction):  Likewise.
36 2006-02-14  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
38         PR fortran/26277
39         * io.c (match_ltag): Mark label as referenced.
41 2006-02-14  Jakub Jelinek  <jakub@redhat.com>
42             Richard Henderson  <rth@redhat.com>
43             Diego Novillo  <dnovillo@redhat.com>
45         * invoke.texi: Document -fopenmp.
46         * gfortran.texi (Extensions): Document OpenMP.
48         Backport from gomp-20050608-branch
49         * trans-openmp.c: Call build_omp_clause instead of
50         make_node when creating OMP_CLAUSE_* trees.
51         (gfc_trans_omp_reduction_list): Remove argument 'code'.
52         Adjust all callers.
54         * trans.h (build4_v): Define.
55         * trans-openmp.c: Call build4_v to create OMP_PARALLEL nodes.
56         Call build3_v to create OMP_SECTIONS nodes.
58         PR fortran/25162
59         * openmp.c (gfc_match_omp_variable_list): Call gfc_set_sym_referenced
60         on all symbols added to the variable list.
62         * openmp.c (gfc_match_omp_clauses): Fix check for non-INTRINSIC
63         procedure symbol in REDUCTION.
65         * trans-openmp.c (gfc_trans_omp_array_reduction): Use gfc_add
66         for MINUS_EXPR OMP_CLAUSE_REDUCTION_CODE.
68         * trans-openmp.c (gfc_trans_omp_do): Add PBLOCK argument.  If PBLOCK
69         is non-NULL, evaluate INIT/COND/INCR and chunk size expressions in
70         that statement block.
71         (gfc_trans_omp_parallel_do): Pass non-NULL PBLOCK to gfc_trans_omp_do
72         for non-ordered non-static combined loops.
73         (gfc_trans_omp_directive): Pass NULL PBLOCK to gfc_trans_omp_do.
75         * openmp.c: Include target.h and toplev.h.
76         (gfc_match_omp_threadprivate): Emit diagnostic if target does
77         not support TLS.
78         * Make-lang.in (fortran/openmp.o): Add dependencies on
79         target.h and toplev.h.
81         * trans-decl.c (gfc_get_fake_result_decl): Set GFC_DECL_RESULT.
82         * trans-openmp.c (gfc_omp_privatize_by_reference): Make
83         DECL_ARTIFICIAL vars predetermined shared except GFC_DECL_RESULT.
84         (gfc_omp_disregard_value_expr): Handle GFC_DECL_RESULT.
85         (gfc_trans_omp_variable): New function.
86         (gfc_trans_omp_variable_list, gfc_trans_omp_reduction_list): Use it.
87         * trans.h (GFC_DECL_RESULT): Define.
89         * trans-openmp.c (gfc_omp_firstprivatize_type_sizes): New function.
90         * f95-lang.c (LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES): Define.
91         * trans.h (gfc_omp_firstprivatize_type_sizes): New prototype.
93         * trans-openmp.c (gfc_omp_privatize_by_reference): Return
94         true if a pointer has GFC_DECL_SAVED_DESCRIPTOR set.
95         (gfc_trans_omp_array_reduction, gfc_trans_omp_reduction_list): New
96         functions.
97         (gfc_trans_omp_clauses): Add WHERE argument.  Call
98         gfc_trans_omp_reduction_list rather than gfc_trans_omp_variable_list
99         for reductions.
100         (gfc_trans_omp_do, gfc_trans_omp_parallel, gfc_trans_omp_parallel_do,
101         gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare,
102         gfc_trans_omp_sections, gfc_trans_omp_single): Adjust
103         gfc_trans_omp_clauses callers.
105         * openmp.c (omp_current_do_code): New var.
106         (gfc_resolve_omp_do_blocks): New function.
107         (gfc_resolve_omp_parallel_blocks): Call it.
108         (gfc_resolve_do_iterator): Add CODE argument.  Don't propagate
109         predetermination if argument is !$omp do or !$omp parallel do
110         iteration variable.
111         * resolve.c (resolve_code): Call gfc_resolve_omp_do_blocks
112         for EXEC_OMP_DO.  Adjust gfc_resolve_do_iterator caller.
113         * fortran.h (gfc_resolve_omp_do_blocks): New prototype.
114         (gfc_resolve_do_iterator): Add CODE argument.
116         * trans.h (gfc_omp_predetermined_sharing,
117         gfc_omp_disregard_value_expr, gfc_omp_private_debug_clause): New
118         prototypes.
119         (GFC_DECL_COMMON_OR_EQUIV, GFC_DECL_CRAY_POINTEE): Define.
120         * trans-openmp.c (gfc_omp_predetermined_sharing,
121         gfc_omp_disregard_value_expr, gfc_omp_private_debug_clause): New
122         functions.
123         * trans-common.c (build_equiv_decl, build_common_decl,
124         create_common): Set GFC_DECL_COMMON_OR_EQUIV flag on the decls.
125         * trans-decl.c (gfc_finish_cray_pointee): Set GFC_DECL_CRAY_POINTEE
126         on the decl.
127         * f95-lang.c (LANG_HOOKS_OMP_PREDETERMINED_SHARING,
128         LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR,
129         LANG_HOOKS_OMP_PRIVATE_DEBUG_CLAUSE): Define.
131         * openmp.c (resolve_omp_clauses): Remove extraneous comma.
133         * symbol.c (check_conflict): Add conflict between cray_pointee and
134         threadprivate.
135         * openmp.c (gfc_match_omp_threadprivate): Fail if
136         gfc_add_threadprivate returned FAILURE.
137         (resolve_omp_clauses): Diagnose Cray pointees in SHARED,
138         {,FIRST,LAST}PRIVATE and REDUCTION clauses and Cray pointers in
139         {FIRST,LAST}PRIVATE and REDUCTION clauses.
141         * resolve.c (omp_workshare_flag): New variable.
142         (resolve_function): Diagnose use of non-ELEMENTAL user defined
143         function in WORKSHARE construct.
144         (resolve_code): Cleanup forall_save use.  Make sure omp_workshare_flag
145         is set to correct value in different contexts.
147         * openmp.c (resolve_omp_clauses): Replace %s with '%s' when printing
148         variable name.
149         (resolve_omp_atomic): Likewise.
151         PR fortran/24493
152         * scanner.c (skip_free_comments): Set at_bol at the beginning of the
153         loop, not before it.
154         (skip_fixed_comments): Handle ! comments in the middle of line here
155         as well.
156         (gfc_skip_comments): Use skip_fixed_comments for FIXED_FORM even if
157         not at BOL.
158         (gfc_next_char_literal): Fix expected canonicalized *$omp string.
160         * trans-openmp.c (gfc_trans_omp_do): Use make_node and explicit
161         initialization to build OMP_FOR instead of build.
163         * trans-decl.c (gfc_gimplify_function): Invoke
164         diagnose_omp_structured_block_errors.
166         * trans-openmp.c (gfc_trans_omp_master): Use OMP_MASTER.
167         (gfc_trans_omp_ordered): Use OMP_ORDERED.
169         * gfortran.h (gfc_resolve_do_iterator, gfc_resolve_blocks,
170         gfc_resolve_omp_parallel_blocks): New prototypes.
171         * resolve.c (resolve_blocks): Renamed to...
172         (gfc_resolve_blocks): ... this.  Remove static.
173         (gfc_resolve_forall): Adjust caller.
174         (resolve_code): Only call gfc_resolve_blocks if code->block != 0
175         and not for EXEC_OMP_PARALLEL* directives.  Call
176         gfc_resolve_omp_parallel_blocks for EXEC_OMP_PARALLEL* directives.
177         Call gfc_resolve_do_iterator if resolved successfully EXEC_DO
178         iterator.
179         * openmp.c: Include pointer-set.h.
180         (omp_current_ctx): New variable.
181         (gfc_resolve_omp_parallel_blocks, gfc_resolve_do_iterator): New
182         functions.
183         * Make-lang.in (fortran/openmp.o): Depend on pointer-set.h.
185         * openmp.c (gfc_match_omp_clauses): For max/min/iand/ior/ieor,
186         look up symbol if it exists, use its name instead and, if it is not
187         INTRINSIC, issue diagnostics.
189         * parse.c (parse_omp_do): Handle implied end do properly.
190         (parse_executable): If parse_omp_do returned ST_IMPLIED_ENDDO,
191         return it instead of continuing.
193         * trans-openmp.c (gfc_trans_omp_critical): Update for changed
194         operand numbering.
195         (gfc_trans_omp_do, gfc_trans_omp_parallel, gfc_trans_omp_parallel_do,
196         gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare,
197         gfc_trans_omp_sections, gfc_trans_omp_single): Likewise.
199         * trans.h (gfc_omp_privatize_by_reference): New prototype.
200         * f95-lang.c (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Redefine
201         to gfc_omp_privatize_by_reference.
202         * trans-openmp.c (gfc_omp_privatize_by_reference): New function.
204         * trans-stmt.h (gfc_trans_omp_directive): Add comment.
206         * openmp.c (gfc_match_omp_variable_list): Add ALLOW_COMMON argument.
207         Disallow COMMON matching if it is set.
208         (gfc_match_omp_clauses, gfc_match_omp_flush): Adjust all callers.
209         (resolve_omp_clauses): Show locus in error messages.  Check that
210         variable types in reduction clauses are appropriate for reduction
211         operators.
213         * resolve.c (resolve_symbol): Don't error if a threadprivate module
214         variable isn't SAVEd.
216         * trans-openmp.c (gfc_trans_omp_do): Put count into BLOCK, not BODY.
217         Fix typo in condition.  Fix DOVAR initialization.
219         * openmp.c (gfc_match_omp_clauses): Match min/iand/ior/ieor
220         rather than .min. etc.
222         * trans-openmpc.c (omp_not_yet): Remove.
223         (gfc_trans_omp_parallel_do): Keep listprivate clause on parallel.
224         Force creation of BIND_EXPR around the workshare construct.
225         (gfc_trans_omp_parallel_sections): Likewise.
226         (gfc_trans_omp_parallel_workshare): Likewise.
228         * types.def (BT_I16, BT_FN_I16_VPTR_I16,
229         BT_FN_BOOL_VPTR_I16_I16, BT_FN_I16_VPTR_I16_I16): Add.
231         * trans-openmp.c (gfc_trans_omp_clauses): Create OMP_CLAUSE_DEFAULT.
232         (gfc_trans_omp_code): New function.
233         (gfc_trans_omp_do): Use it, remove omp_not_yet uses.
234         (gfc_trans_omp_parallel, gfc_trans_omp_single): Likewise.
235         (gfc_trans_omp_sections): Likewise.  Only treat empty last section
236         specially if lastprivate clause is present.
237         * f95-lang.c (gfc_init_builtin_functions): Create BUILT_IN_TRAP
238         builtin.
240         * trans-openmp.c (gfc_trans_omp_variable_list): Update for
241         OMP_CLAUSE_DECL name change.
242         (gfc_trans_omp_do): Likewise.
244         * trans-openmp.c (gfc_trans_omp_clauses): Create OMP_CLAUSE_REDUCTION
245         clauses.
246         (gfc_trans_omp_atomic): Build OMP_ATOMIC instead of expanding
247         sync builtins directly.
248         (gfc_trans_omp_single): Build OMP_SINGLE statement.
250         * trans-openmp.c (gfc_trans_add_clause): New.
251         (gfc_trans_omp_variable_list): Take a tree code and build the clause
252         node here.  Link it to the head of a list.
253         (gfc_trans_omp_clauses): Update to match.
254         (gfc_trans_omp_do): Use gfc_trans_add_clause.
256         * trans-openmp.c (gfc_trans_omp_clauses): Change second argument to
257         gfc_omp_clauses *.  Use gfc_evaluate_now instead of creating
258         temporaries by hand.
259         (gfc_trans_omp_atomic, gfc_trans_omp_critical): Use buildN_v macros.
260         (gfc_trans_omp_do): New function.
261         (gfc_trans_omp_master): Dont' check for gfc_trans_code returning NULL.
262         (gfc_trans_omp_parallel): Adjust gfc_trans_omp_clauses caller.
263         Use buildN_v macros.
264         (gfc_trans_omp_parallel_do, gfc_trans_omp_parallel_sections,
265         gfc_trans_omp_parallel_workshare, gfc_trans_omp_sections,
266         gfc_trans_omp_single, gfc_trans_omp_workshare): New functions.
267         (gfc_trans_omp_directive): Use them.
268         * parse.c (parse_omp_do): Allow new_st.op == EXEC_NOP.
269         * openmp.c (resolve_omp_clauses): Check for list items present
270         in multiple clauses.
271         (resolve_omp_do): Check that iteration variable is not THREADPRIVATE
272         and is not present in any clause variable lists other than PRIVATE
273         or LASTPRIVATE.
275         * gfortran.h (symbol_attribute): Add threadprivate bit.
276         (gfc_common_head): Add threadprivate member, change use_assoc
277         and saved into char to save space.
278         (gfc_add_threadprivate): New prototype.
279         * symbol.c (check_conflict): Handle threadprivate.
280         (gfc_add_threadprivate): New function.
281         (gfc_copy_attr): Copy threadprivate.
282         * trans-openmp.c (gfc_trans_omp_clauses): Avoid creating a temporary
283         if IF or NUM_THREADS is constant.  Create OMP_CLAUSE_SCHEDULE and
284         OMP_CLAUSE_ORDERED.
285         * resolve.c (resolve_symbol): Complain if a THREADPRIVATE symbol
286         outside a module and not in COMMON has is not SAVEd.
287         (resolve_equivalence): Ensure THREADPRIVATE objects don't get
288         EQUIVALENCEd.
289         * trans-common.c: Include target.h and rtl.h.
290         (build_common_decl): Set DECL_TLS_MODEL if THREADPRIVATE.
291         * trans-decl.c: Include rtl.h.
292         (gfc_finish_var_decl): Set DECL_TLS_MODEL if THREADPRIVATE.
293         * dump-parse-tree.c (gfc_show_attr): Handle THREADPRIVATE.
294         * Make-lang.in (fortran/trans-decl.o): Depend on $(RTL_H).
295         (fortran/trans-common.o): Depend on $(RTL_H) and $(TARGET_H).
296         * openmp.c (gfc_match_omp_variable_list): Ensure COMMON block
297         is from current namespace.
298         (gfc_match_omp_threadprivate): Rewrite.
299         (resolve_omp_clauses): Check some clause restrictions.
300         * module.c (ab_attribute): Add AB_THREADPRIVATE.
301         (attr_bits): Add THREADPRIVATE.
302         (mio_symbol_attribute, mio_symbol_attribute): Handle threadprivate.
303         (load_commons, write_common, write_blank_common): Adjust for type
304         change of saved, store/load threadprivate bit from the integer
305         as well.
307         * types.def (BT_FN_UINT_UINT): New.
308         (BT_FN_VOID_UINT_UINT): Remove.
310         * trans-openmp.c (gfc_trans_omp_clauses, gfc_trans_omp_barrier,
311         gfc_trans_omp_critical, gfc_trans_omp_flush, gfc_trans_omp_master,
312         gfc_trans_omp_ordered, gfc_trans_omp_parallel): New functions.
313         (gfc_trans_omp_directive): Use them.
315         * openmp.c (expr_references_sym): Add SE argument, don't look
316         into SE tree.
317         (is_conversion): New function.
318         (resolve_omp_atomic): Adjust expr_references_sym callers.  Handle
319         promoted expressions.
320         * trans-openmp.c (gfc_trans_omp_atomic): New function.
321         (gfc_trans_omp_directive): Call it.
323         * f95-lang.c (builtin_type_for_size): New function.
324         (gfc_init_builtin_functions): Initialize synchronization and
325         OpenMP builtins.
326         * types.def: New file.
327         * Make-lang.in (f95-lang.o): Depend on $(BUILTINS_DEF) and
328         fortran/types.def.
330         * trans-openmp.c: Rename GOMP_* tree codes into OMP_*.
332         * dump-parse-tree.c (show_symtree): Don't crash if ns->proc_name
333         is NULL.
335         * dump-parse-tree.c (gfc_show_namelist, gfc_show_omp_node): New
336         functions.
337         (gfc_show_code_node): Call gfc_show_omp_node for EXEC_OMP_* nodes.
339         * parse.c (parse_omp_do): Call pop_state before next_statement.
340         * openmp.c (expr_references_sym, resolve_omp_atomic, resolve_omp_do):
341         New functions.
342         (gfc_resolve_omp_directive): Call them.
343         * match.c (match_exit_cycle): Issue error if EXIT or CYCLE statement
344         leaves an OpenMP structured block or if EXIT terminates !$omp do
345         loop.
347         * Make-lang.in (F95_PARSER_OBJS): Add fortran/openmp.o.
348         (F95_OBJS): Add fortran/trans-openmp.o.
349         (fortran/trans-openmp.o): Depend on $(GFORTRAN_TRANS_DEPS).
350         * lang.opt: Add -fopenmp option.
351         * options.c (gfc_init_options): Initialize it.
352         (gfc_handle_option): Handle it.
353         * gfortran.h (ST_OMP_ATOMIC, ST_OMP_BARRIER, ST_OMP_CRITICAL,
354         ST_OMP_END_CRITICAL, ST_OMP_END_DO, ST_OMP_END_MASTER,
355         ST_OMP_END_ORDERED, ST_OMP_END_PARALLEL, ST_OMP_END_PARALLEL_DO,
356         ST_OMP_END_PARALLEL_SECTIONS, ST_OMP_END_PARALLEL_WORKSHARE,
357         ST_OMP_END_SECTIONS, ST_OMP_END_SINGLE, ST_OMP_END_WORKSHARE,
358         ST_OMP_DO, ST_OMP_FLUSH, ST_OMP_MASTER, ST_OMP_ORDERED,
359         ST_OMP_PARALLEL, ST_OMP_PARALLEL_DO, ST_OMP_PARALLEL_SECTIONS,
360         ST_OMP_PARALLEL_WORKSHARE, ST_OMP_SECTIONS, ST_OMP_SECTION,
361         ST_OMP_SINGLE, ST_OMP_THREADPRIVATE, ST_OMP_WORKSHARE): New
362         statement codes.
363         (OMP_LIST_PRIVATE, OMP_LIST_FIRSTPRIVATE, OMP_LIST_LASTPRIVATE,
364         OMP_LIST_COPYPRIVATE, OMP_LIST_SHARED, OMP_LIST_COPYIN,
365         OMP_LIST_PLUS, OMP_LIST_REDUCTION_FIRST, OMP_LIST_MULT,
366         OMP_LIST_SUB, OMP_LIST_AND, OMP_LIST_OR, OMP_LIST_EQV,
367         OMP_LIST_NEQV, OMP_LIST_MAX, OMP_LIST_MIN, OMP_LIST_IAND,
368         OMP_LIST_IOR, OMP_LIST_IEOR, OMP_LIST_REDUCTION_LAST, OMP_LIST_NUM):
369         New OpenMP variable list types.
370         (gfc_omp_clauses): New typedef.
371         (gfc_get_omp_clauses): Define.
372         (EXEC_OMP_CRITICAL, EXEC_OMP_DO, EXEC_OMP_FLUSH, EXEC_OMP_MASTER,
373         EXEC_OMP_ORDERED, EXEC_OMP_PARALLEL, EXEC_OMP_PARALLEL_DO,
374         EXEC_OMP_PARALLEL_SECTIONS, EXEC_OMP_PARALLEL_WORKSHARE,
375         EXEC_OMP_SECTIONS, EXEC_OMP_SINGLE, EXEC_OMP_WORKSHARE,
376         EXEC_OMP_ATOMIC, EXEC_OMP_BARRIER, EXEC_OMP_END_NOWAIT,
377         EXEC_OMP_END_SINGLE): New OpenMP gfc_exec_op codes.
378         (struct gfc_code): Add omp_clauses, omp_name, omp_namelist
379         and omp_bool fields to ext union.
380         (flag_openmp): Declare.
381         (gfc_free_omp_clauses, gfc_resolve_omp_directive): New prototypes.
382         * scanner.c (openmp_flag, openmp_locus): New variables.
383         (skip_free_comments, skip_fixed_comments, gfc_next_char_literal):
384         Handle OpenMP directive lines and conditional compilation magic
385         comments.
386         * parse.h (COMP_OMP_STRUCTURED_BLOCK): New compile state.
387         * parse.c (decode_omp_directive, parse_omp_do, parse_omp_atomic,
388         parse_omp_structured_block): New functions.
389         (next_free, next_fixed): Parse OpenMP directives.
390         (case_executable, case_exec_markers, case_decl): Add ST_OMP_*
391         codes.
392         (gfc_ascii_statement): Handle ST_OMP_* codes.
393         (parse_executable): Rearrange the loop slightly, so that
394         parse_omp_do can return next_statement.
395         * match.h (gfc_match_omp_eos, gfc_match_omp_atomic,
396         gfc_match_omp_barrier, gfc_match_omp_critical, gfc_match_omp_do,
397         gfc_match_omp_flush, gfc_match_omp_master, gfc_match_omp_ordered,
398         gfc_match_omp_parallel, gfc_match_omp_parallel_do,
399         gfc_match_omp_parallel_sections, gfc_match_omp_parallel_workshare,
400         gfc_match_omp_sections, gfc_match_omp_single,
401         gfc_match_omp_threadprivate, gfc_match_omp_workshare,
402         gfc_match_omp_end_nowait, gfc_match_omp_end_single): New prototypes.
403         * resolve.c (resolve_blocks): Ignore EXEC_OMP_* block directives.
404         (resolve_code): Call gfc_resolve_omp_directive on EXEC_OMP_*
405         directives.
406         * trans.c (gfc_trans_code): Call gfc_trans_omp_directive for
407         EXEC_OMP_* directives.
408         * st.c (gfc_free_statement): Handle EXEC_OMP_* statement freeing.
409         * trans-stmt.h (gfc_trans_omp_directive): New prototype.
410         * openmp.c: New file.
411         * trans-openmp.c: New file.
413 2006-02-13  Andrew Pinski  <pinskia@physics.uc.edu>
414             Jakub Jelinek  <jakub@redhat.com>
416         PR fortran/26246
417         * trans-decl.c (gfc_get_symbol_decl, gfc_get_fake_result_decl): Use
418         gfc_add_decl_to_function rather than gfc_finish_var_decl on length.
420 2006-02-13  Paul Thomas  <pault@gcc.gnu.org>
422         PR fortran/26074
423         PR fortran/25103
424         * resolve.c (resolve_symbol): Extend the requirement that module
425         arrays have constant bounds to those in the main program.  At the
426         same time simplify the array bounds, to avoiding trapping parameter
427         array references, and exclude automatic character length from main
428         and modules. Rearrange resolve_symbol and resolve_derived to put as
429         each flavor together, as much as is possible and move all specific
430         code for flavors FL_VARIABLE, FL_PROCEDURE and FL_PARAMETER into new
431         functions.
432         (resolve_fl_var_and_proc, resolve_fl_variable, resolve_fl_procedure):
433         New functions to do work of resolve_symbol.
434         (resolve_index_expr): New function that is called from resolved_symbol
435         and is extracted from resolve_charlen.
436         (resolve_charlen): Call this new function.
437         (resolve_fl_derived): Renamed resolve_derived to be consistent with
438         the naming of the new functions for the other flavours.  Change the
439         charlen checking so that the style is consistent with other similar
440         checks. Add the generation of the gfc_dt_list, removed from resolve_
441         symbol.
443         PR fortran/20861
444         * resolve.c (resolve_actual_arglist): Prevent internal procedures
445         from being dummy arguments.
447         PR fortran/20871
448         * resolve.c (resolve_actual_arglist): Prevent pure but non-intrinsic
449         procedures from being dummy arguments.
451         PR fortran/25083
452         * resolve.c (check_data_variable): Add test that data variable is in
453         COMMON.
455         PR fortran/25088
456         * resolve.c (resolve_call): Add test that the subroutine does not
457         have a type.
459 2006-02-12  Erik Edelmann  <eedelman@gcc.gnu.org>
461         PR fortran/25806
462         * trans-array.c (gfc_trans_allocate_array_storage): New argument
463         dealloc; free the temporary only if dealloc is true.
464         (gfc_trans_allocate_temp_array): New argument bool dealloc, to be
465         passed onwards to gfc_trans_allocate_array_storage.
466         (gfc_trans_array_constructor, gfc_conv_loop_setup): Update call to
467         gfc_trans_allocate_temp_array.
468         * trans-array.h (gfc_trans_allocate_temp_array): Update function
469         prototype.
470         * trans-expr.c (gfc_conv_function_call): Set new argument 'dealloc'
471         to gfc_trans_allocate_temp_array to false in case of functions
472         returning pointers.
473         (gfc_trans_arrayfunc_assign): Return NULL for functions returning
474         pointers.
476 2006-02-10  Steven G. Kargl  <kargls@comcast.net>
478         PR fortran/20858
479         *decl.c (variable_decl): Improve error message.  Remove initialization
480         typespec.  Wrap long line.
481         *expr.c (gfc_check_pointer_assign): Permit checking of type, kind type,
482         and rank.
483         *simplify.c (gfc_simplify_null): Ensure type, kind type, and rank
484         are set.
487 2006-02-10  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
489         PR fortran/14771
490         * arith.c (eval_intrinsic): Accept INTRINSIC_PARENTHESES.
491         * expr.c (check_intrinsic_op): Likewise.
492         * module.c (mio_expr): Likewise.
494 2006-02-09  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
496         * dump-parse-tree.c: Update copyright years.
497         * matchexp.c: Likewise.
498         * module.c: Likewise.
500         PR fortran/14771
501         * gfortran.h (gfc_intrinsic_op): Add INTRINSIC_PARENTHESES.
502         * dump-parse-tree (gfc_show_expr): Handle INTRINSIC_PARENTHESES.
503         * expr.c (simplify_intrinsic_op): Treat INTRINSIC_PARENTHESES as
504         if it were INTRINSIC_UPLUS.
505         * resolve.c (resolve_operator): Handle INTRINSIC_PARENTHESES.
506         * match.c (intrinsic_operators): Add INTRINSIC_PARENTHESES.
507         * matchexp.c (match_primary): Record parentheses surrounding
508         numeric expressions.
509         * module.c (intrinsics): Add INTRINSIC_PARENTHESES for module
510         dumping.
511         * trans-expr.c (gfc_conv_expr_op): Handle INTRINSIC_PARENTHESES.
513 2006-02-09  Paul Thomas  <pault@gcc.gnu.org>
515         PR fortran/26038
516         * trans-stmt.c (gfc_trans_allocate): Provide assumed character length
517         scalar with missing backend_decl for the hidden dummy charlen.
519         PR fortran/25059
520         * interface.c (gfc_extend_assign): Remove detection of non-PURE
521         subroutine in assignment interface, with gfc_error, and put it in
522         * resolve.c (resolve_code).
524         PR fortran/25070
525         * interface.c (gfc_procedure_use): Flag rank checking for non-
526         elemental, contained or interface procedures in call to
527         (compare_actual_formal), where ranks are checked for assumed
528         shape arrays..
530 2006-02-08  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
532         PR libfortran/25425
533         * trans-decl.c (gfc_generate_function_code): Add new argument,
534         pedantic, to set_std call.
536 2005-02-06  Thomas Koenig  <Thomas.Koenig@online.de>
538         PR libfortran/23815
539         * gfortran.texi: Document the GFORTRAN_CONVERT_UNIT environment
540         variable.
541         * invoke.texi:  Mention the "Runtime" chapter.
542         Document the -fconvert= option.
543         * gfortran.h:  Add options_convert.
544         * lang.opt:  Add fconvert=little-endian, fconvert=big-endian,
545         fconvert=native and fconvert=swap.
546         * trans-decl.c (top level):  Add gfor_fndecl_set_convert.
547         (gfc_build_builtin_function_decls):  Set gfor_fndecl_set_convert.
548         (gfc_generate_function_code):  If -fconvert was specified,
549         and this is the main program, add a call to set_convert().
550         * options.c:  Handle the -fconvert options.
552 2006-02-06  Roger Sayle  <roger@eyesopen.com>
554         * trans-stmt.c (gfc_evaluate_where_mask): Allow the NMASK argument
555         to be NULL to indicate that the not mask isn't required.
556         (gfc_trans_where_2): Remove PMASK argument.  Avoid calculating the
557         pending mask for the last clause of a WHERE chain.  Update recursive
558         call.
559         (gfc_trans_forall_1): Update call to gfc_trans_where_2.
560         (gfc_trans_where): Likewise.
562 2006-02-06  Jakub Jelinek  <jakub@redhat.com>
564         Backport from gomp-20050608-branch
565         * trans-decl.c (create_function_arglist): Handle dummy functions.
567         * trans-decl.c (gfc_get_symbol_decl): Revert explicit setting of
568         TYPE_SIZE_UNIT.
569         (gfc_trans_vla_type_sizes): Also "gimplify"
570         GFC_TYPE_ARRAY_DATAPTR_TYPE for GFC_DESCRIPTOR_TYPE_P types.
571         * trans-array.c (gfc_trans_deferred_array): Call
572         gfc_trans_vla_type_sizes.
574         * trans-decl.c (saved_function_decls, saved_parent_function_decls):
575         Remove unnecessary initialization.
576         (create_function_arglist): Make sure __result has complete type.
577         (gfc_get_fake_result_decl): Change current_fake_result_decl into
578         a tree chain.  For entry master, create a separate variable
579         for each result name.  For BT_CHARACTER results, call
580         gfc_finish_var_decl on length even if it has been already created,
581         but not pushdecl'ed.
582         (gfc_trans_vla_type_sizes): For function/entry result, adjust
583         result value type, not the FUNCTION_TYPE.
584         (gfc_generate_function_code): Adjust for current_fake_result_decl
585         changes.
586         (gfc_trans_deferred_vars): Likewise.  Call gfc_trans_vla_type_sizes
587         even on result if it is assumed-length character.
589         * trans-decl.c (gfc_trans_dummy_character): Add SYM argument.
590         Call gfc_trans_vla_type_sizes.
591         (gfc_trans_auto_character_variable): Call gfc_trans_vla_type_sizes.
592         (gfc_trans_vla_one_sizepos, gfc_trans_vla_type_sizes_1,
593         gfc_trans_vla_type_sizes): New functions.
594         (gfc_trans_deferred_vars): Adjust gfc_trans_dummy_character
595         callers.  Call gfc_trans_vla_type_sizes on assumed-length
596         character parameters.
597         * trans-array.c (gfc_trans_array_bounds,
598         gfc_trans_auto_array_allocation, gfc_trans_dummy_array_bias): Call
599         gfc_trans_vla_type_sizes.
600         * trans.h (gfc_trans_vla_type_sizes): New prototype.
602         * trans-decl.c (gfc_build_qualified_array): For non-assumed-size
603         arrays without constant size, create also an index var for
604         GFC_TYPE_ARRAY_SIZE (type).  If the type is incomplete, complete
605         it as 0..size-1.
606         (gfc_create_string_length): Don't call gfc_defer_symbol_init
607         if just creating DECL_ARGUMENTS.
608         (gfc_get_symbol_decl): Call gfc_finish_var_decl and
609         gfc_defer_symbol_init even if ts.cl->backend_decl is already
610         set to a VAR_DECL that doesn't have DECL_CONTEXT yet.
611         (create_function_arglist): Rework, so that hidden length
612         arguments for CHARACTER parameters are created together with
613         the parameters.  Resolve ts.cl->backend_decl for CHARACTER
614         parameters.  If the argument is a non-constant length array
615         or CHARACTER, ensure PARM_DECL has different type than
616         its DECL_ARG_TYPE.
617         (generate_local_decl): Call gfc_get_symbol_decl even
618         for non-referenced non-constant length CHARACTER parameters
619         after optionally issuing warnings.
620         * trans-array.c (gfc_trans_array_bounds): Set last stride
621         to GFC_TYPE_ARRAY_SIZE (type) to initialize it as well.
622         (gfc_trans_dummy_array_bias): Initialize GFC_TYPE_ARRAY_SIZE (type)
623         variable as well.
625         * trans-expr.c (gfc_conv_expr_val): Fix comment typo.
627         * trans-stmt.c (gfc_trans_simple_do): Fix comment.
629 2006-02-04  Roger Sayle  <roger@eyesopen.com>
631         * dependency.c (gfc_check_dependency): Remove unused vars and nvars
632         arguments.  Replace with an "identical" argument.  A full array
633         reference to the same symbol is a dependency if identical is true.
634         * dependency.h (gfc_check_dependency): Update prototype.
635         * trans-array.h (gfc_check_dependency): Delete duplicate prototype.
636         * trans-stmt.c: #include dependency.h for gfc_check_dependency.
637         (gfc_trans_forall_1): Update calls to gfc_check_dependency.
638         (gfc_trans_where_2): Likewise.  Remove unneeded variables.
639         (gfc_trans_where_3): New function for simple non-dependent WHEREs.
640         (gfc_trans_where): Call gfc_trans_where_3 to translate simple
641         F90-style WHERE statements without internal dependencies.
642         * Make-lang.in (trans-stmt.o): Depend upon dependency.h.
644 2006-02-05  H.J. Lu  <hongjiu.lu@intel.com>
646         PR fortran/26041
647         PR fortran/26064
648         * resolve.c (resolve_types): New function.
649         (resolve_codes): Likewise.
650         (gfc_resolve): Use them.
652 2006-02-05  Roger Sayle  <roger@eyesopen.com>
654         * trans-stmt.c (gfc_evaluate_where_mask): Use LOGICAL*1 for WHERE
655         masks instead of LOGICAL*4.
657 2006-02-05  Jakub Jelinek  <jakub@redhat.com>
659         * resolve.c (resolve_symbol): Initialize constructor_expr to NULL.
661 2006-02-04  Thomas Koenig  <Thomas.Koenig@online.de>
663         PR fortran/25075
664         check.c (identical_dimen_shape):  New function.
665         (check_dot_product):  Use identical_dimen_shape() to check sizes
666         for dot_product.
667         (gfc_check_matmul):  Likewise.
668         (gfc_check_merge):  Check conformance between tsource and fsource
669         and between tsource and mask.
670         (gfc_check_pack):  Check conformance between array and mask.
672 2006-02-03  Steven G. Kargl  <kargls@comcast>
673             Paul Thomas  <pault@gcc.gnu.org>
675         PR fortran/20845
676         * resolve.c (resolve_symbol): Default initialization of derived type
677         component reguires the SAVE attribute.
679 2006-02-02  Steven G. Kargl  <kargls@comcast>
681         PR fortran/24958
682         match.c (gfc_match_nullify):  Free the list from head not tail.
684         PR fortran/25072
685         * match.c (match_forall_header): Fix internal error caused by bogus
686         gfc_epxr pointers.
689 2006-01-31  Thomas Koenig  <Thomas.Koenig@online.de>
691         PR fortran/26039
692         expr.c (gfc_check_conformance):  Reorder error message
693         to avoid plural.
694         check.c(gfc_check_minloc_maxloc):  Call gfc_check_conformance
695         for checking arguments array and mask.
696         (check_reduction):  Likewise.
698 2005-01-30  Erik Edelmann  <eedelman@gcc.gnu.org>
700         PR fortran/24266
701         * trans-io.c (set_internal_unit): Check the rank of the
702         expression node itself instead of its symbol.
704 2006-01-29  Paul Thomas  <pault@gcc.gnu.org>
706         PR fortran/18578
707         PR fortran/18579
708         PR fortran/20857
709         PR fortran/20885
710         * interface.c (compare_actual_formal): Error for INTENT(OUT or INOUT)
711         if actual argument is not a variable.
713 2006-01-28  Paul Thomas  <pault@gcc.gnu.org>
715         PR fortran/17911
716         * expr.c (gfc_check_assign, gfc_check_pointer_assign): Emit error if
717         the lvalue is a use associated procedure.
719         PR fortran/20895
720         PR fortran/25030
721         * expr.c (gfc_check_pointer_assign): Emit error if lvalue and rvalue
722         character lengths are not the same.  Use gfc_dep_compare_expr for the
723         comparison.
724         * gfortran.h: Add prototype for gfc_dep_compare_expr.
725         * dependency.h: Remove prototype for gfc_dep_compare_expr.
727 2005-01-27  Paul Thomas  <pault@gcc.gnu.org>
729         PR fortran/25964
730         * resolve.c (resolve_function): Add GFC_ISYM_LOC to the list of
731         generic_ids exempted from assumed size checking.
733 2006-01-27  Jakub Jelinek  <jakub@redhat.com>
735         PR fortran/25324
736         * Make-lang.in (fortran/scanner.o): Depend on toplev.h.
737         * lang.opt (fpreprocessed): New option.
738         * scanner.c: Include toplev.h.
739         (gfc_src_file, gfc_src_preprocessor_lines): New variables.
740         (preprocessor_line): Unescape filename if there were any
741         backslashes.
742         (load_file): If initial and gfc_src_file is not NULL,
743         use it rather than opening the file.  If gfc_src_preprocessor_lines
744         has non-NULL elements, pass it to preprocessor_line.
745         (unescape_filename, gfc_read_orig_filename): New functions.
746         * gfortran.h (gfc_option_t): Add flag_preprocessed.
747         (gfc_read_orig_filename): New prototype.
748         * options.c (gfc_init_options): Clear flag_preprocessed.
749         (gfc_post_options): If flag_preprocessed, call
750         gfc_read_orig_filename.
751         (gfc_handle_option): Handle OPT_fpreprocessed.
752         * lang-specs.h: Pass -fpreprocessed to f951 if preprocessing
753         sources.
755 2005-01-27  Erik Edelmann  <eedelman@gcc.gnu.org>
757         * symbol.c (free_old_symbol): Fix confusing comment, and add code
758           to free old_symbol->formal.
760 2005-01-26  Paul Thomas  <pault@gcc.gnu.org>
762         PR fortran/25964
763         * resolve.c (resolve_function): Exclude statement functions from
764         global reference checking.
766         PR fortran/25084
767         PR fortran/20852
768         PR fortran/25085
769         PR fortran/25086
770         * resolve.c (resolve_function): Declare a gfc_symbol to replace the
771         references through the symtree to the symbol associated with the
772         function expresion. Give error on reference to an assumed character
773         length function is defined in an interface or an external function
774         that is not a dummy argument.
775         (resolve_symbol): Give error if an assumed character length function
776         is array-valued, pointer-valued, pure or recursive. Emit warning
777         that character(*) value functions are obsolescent in F95.
779         PR fortran/25416
780         * trans-expr.c (gfc_conv_function_call): The above patch to resolve.c
781         prevents any assumed character length function call from getting here
782         except intrinsics such as SPREAD. In this case, ensure that no
783         segfault occurs from referencing non-existent charlen->length->
784         expr_type and provide a backend_decl for the charlen from the charlen
785         of the first actual argument.
787         Cure temp name confusion.
788         * trans-expr.c (gfc_get_interface_mapping_array): Change name of
789         temporary from "parm" to "ifm" to avoid clash with temp coming from
790         trans-array.c.
792 2005-01-25  Erik Edelmann  <eedelman@gcc.gnu.org>
794         PR fortran/25716
795         * symbol.c (free_old_symbol): New function.
796         (gfc_commit_symbols): Use it.
797         (gfc_commit_symbol): New function.
798         (gfc_use_derived): Use it.
799         * gfortran.h: Add prototype for gfc_commit_symbol.
800         * intrinsic.c (gfc_find_function): Search in 'conversion'
801         if not found in 'functions'.
802         (gfc_convert_type_warn): Add a symtree to the new
803         expression node, and commit the new symtree->n.sym.
804         * resolve.c (gfc_resolve_index): Make sure typespec is
805         properly initialized.
807 2005-01-23  Paul Thomas  <pault@gcc.gnu.org>
809         PR fortran/25901
810         * decl.c (get_proc_name): Replace subroutine and function attributes
811         in "already defined" test by the formal arglist pointer being non-NULL.
813         Fix regression in testing of admissability of attributes.
814         * symbol.c (gfc_add_attribute): If the current_attr has non-zero
815         intent, do not do the check for a dummy being used.
816         * decl.c (attr_decl1): Add current_attr.intent as the third argument
817         in the call to gfc_add_attribute.
818         * gfortran.h: Add the third argument to the prototype for
819         gfc_add_attribute.
821 2006-01-21  Joseph S. Myers  <joseph@codesourcery.com>
823         * gfortranspec.c (lang_specific_driver): Update copyright notice
824         date.
826 2005-01-21  Paul Thomas  <pault@gcc.gnu.org>
828         PR fortran/25124
829         PR fortran/25625
830         * decl.c (get_proc_name): If there is an existing
831         symbol in the encompassing namespace, call errors
832         if it is a procedure of the same name or the kind
833         field is set, indicating a type declaration.
835         PR fortran/20881
836         PR fortran/23308
837         PR fortran/25538
838         PR fortran/25710
839         * decl.c (add_global_entry): New function to check
840         for existing global symbol with this name and to
841         create new one if none exists.
842         (gfc_match_entry): Call add_global_entry before
843         matching argument lists for subroutine and function
844         entries.
845         * gfortran.h: Prototype for existing function,
846         global_used.
847         * resolve.c (resolve_global_procedure): New function
848         to check global symbols for procedures.
849         (resolve_call, resolve_function): Calls to this
850         new function for non-contained and non-module
851         procedures.
852         * match.c (match_common): Add check for existing
853         global symbol, creat one if none exists and emit
854         error if there is a clash.
855         * parse.c (global_used): Remove static and use the
856         gsymbol name rather than the new_block name, so that
857         the function can be called from resolve.c.
858         (parse_block_data, parse_module, add_global_procedure):
859         Improve checks for existing gsymbols.  Emit error if
860         already defined or if references were to another type.
861         Set defined flag.
863         PR fortran/PR24276
864         * trans-expr.c (gfc_conv_aliased_arg): New function called by 
865         gfc_conv_function_call that coverts an expression for an aliased
866         component reference to a derived type array into a temporary array
867         of the same type as the component.  The temporary is passed as an
868         actual argument for the procedure call and is copied back to the
869         derived type after the call.
870         (is_aliased_array): New function that detects an array reference
871         that is followed by a component reference.
872         (gfc_conv_function_call): Detect an aliased actual argument with
873         is_aliased_array and convert it to a temporary and back again
874         using gfc_conv_aliased_arg.
876 2006-01-19  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
878         * gfortranspec.c: Update copyright years.
879         * trans.c: Likewise.
880         * trans-array.c: Likewise.
881         * trans-array.h: Likewise.
882         * trans-decl.c: Likewise.
883         * trans-stmt.c: Likewise.
884         * trans-stmt.h: Likewise.
885         * trans-types.c: Likewise.
887 2006-01-18  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
889         PR fortran/18540
890         PR fortran/18937
891         * gfortran.h (BBT_HEADER): Move definition up.
892         (gfc_st_label): Add BBT_HEADER, remove 'prev' and 'next'.
893         * io.c (format_asterisk): Adapt initializer.
894         * resolve.c (resolve_branch): Allow FORTRAN 66 cross-block GOTOs
895         as extension.
896         (warn_unused_label): Take gfc_st_label label as argument, adapt to
897         new data structure.
898         (gfc_resolve): Adapt call to warn_unused_label.
899         * symbol.c (compare_st_labels): New function.
900         (gfc_free_st_label, free_st_labels, gfc_get_st_label): Convert to
901         using balanced binary tree.
902         * decl.c (match_char_length, gfc_match_old_kind_spec): Do away
903         with 'cnt'.
904         (warn_unused_label): Adapt to binary tree.
905         * match.c (gfc_match_small_literal_int): Only set cnt if non-NULL.
906         * primary.c (match_kind_param): Do away with cnt.
908 2006-01-18  Paul Thomas  <pault@gcc.gnu.org>
910         PR fortran/20869
911         PR fortran/20875
912         PR fortran/25024
913         * symbol.c (check_conflict): Add pointer valued elemental
914         functions and internal procedures with the external attribute
915         to the list of conflicts.
916         (gfc_add_attribute): New catch-all function to perform the
917         checking of symbol attributes for attribute declaration
918         statements.
919         * decl.c (attr_decl1): Call gfc_add_attribute for each of -
920         (gfc_match_external, gfc_match_intent, gfc_match_intrinsic,
921         gfc_match_pointer, gfc_match_dimension, gfc_match_target):
922         Remove spurious calls to checks in symbol.c.  Set the
923         attribute directly and use the call to attr_decl() for
924         checking.
925         * gfortran.h:  Add prototype for gfc_add_attribute.
927         PR fortran/25785
928         * resolve.c (resolve_function): Exclude PRESENT from assumed size
929         argument checking. Replace strcmp's with comparisons with generic
930         codes.
932 2006-01-16  Rafael �Ávila de Esp�índola  <rafael.espindola@gmail.com>
934         * gfortranspec.c (lang_specific_spec_functions): Remove.
936 2006-01-16  Richard Guenther  <rguenther@suse.de>
938         * trans-stmt.c (gfc_trans_if_1): Use fold_buildN and build_int_cst.
939         (gfc_trans_arithmetic_if): Likewise.
940         (gfc_trans_simple_do): Likewise.
941         (gfc_trans_do): Likewise.
942         (gfc_trans_do_while): Likewise.
943         (gfc_trans_logical_select): Likewise.
944         (gfc_trans_forall_loop): Likewise.
945         (generate_loop_for_temp_to_lhs): Likewise.
946         (generate_loop_for_rhs_to_temp): Likewise.
947         (gfc_trans_allocate): Likewise.
948         * trans.c (gfc_add_expr_to_block): Do not fold expr again.
950 2006-01-16  Richard Guenther  <rguenther@suse.de>
952         * trans-expr.c (gfc_conv_function_call): Use fold_build2.
953         * trans-stmt.c (gfc_trans_goto): Likewise.  Use build_int_cst.
954         * trans.c (gfc_trans_runtime_check): Don't fold the condition
955         again.
957 2006-01-13  Steven G. Kargl  <kargls@comcast.net>
959         PR fortran/25756
960         * symbol.c (gfc_free_st_label): Give variable meaningful name. Remove
961         unneeded parenthesis. Fix-up the head of the list (2 lines gleaned
962         from g95).
964 2006-01-13  Diego Novillo  <dnovillo@redhat.com>
966         * trans.c (gfc_add_expr_to_block): Do not fold tcc_statement
967         nodes.
969 2006-01-11  Tobias Schl�üter  <tobias.schlueter@physik.uni-muenchen.de>
971         * parse.c (next_fixed): Remove superfluous string concatenation.
973 2006-01-11  Bernhard Fischer  <rep.nop@aon.at>
975         PR fortran/25486
976         * scanner.c (load_line): use maxlen to determine the line-length used
977         for padding lines in fixed form.
979 2005-01-11  Paul Thomas  <pault@gcc.gnu.org>
981         PR fortran/25730
982         * trans-types.c (copy_dt_decls_ifequal): Copy backend decl for
983         character lengths.
985 2006-01-09  Andrew Pinski  <pinskia@physics.uc.edu>
987         fortran/24936
988         * trans-stmt.c (gfc_trans_pointer_assign_need_temp): Use fold_convert
989         to avoid type mismatch.
991 2006-01-09  Andrew Pinski  <pinskia@physics.uc.edu>
993         PR fortran/21977
994         * trans-decl.c (gfc_generate_function_code): Move the NULLing of
995         current_fake_result_decl down to below generate_local_vars.
997 2006-01-09  Feng Wang  <fengwang@nudt.edu.cn>
999         PR fortran/12456
1000         * trans-expr.c (gfc_to_single_character): New function that converts
1001         string to single character if its length is 1.
1002         (gfc_build_compare_string):New function that compare string and handle
1003         single character specially.
1004         (gfc_conv_expr_op): Use gfc_build_compare_string.
1005         (gfc_trans_string_copy): Use gfc_to_single_character.
1006         * trans-intrinsic.c (gfc_conv_intrinsic_strcmp): Use
1007         gfc_build_compare_string.
1008         * trans.h (gfc_build_compare_string): Add prototype.
1010 2006-01-09  Feng Wang  <fengwang@nudt.edu.cn>
1012         * simplify.c (gfc_simplify_char): Use UCHAR_MAX instead of literal
1013         constant.
1014         (gfc_simplify_ichar): Get the result from unsinged char and in the
1015         range 0 to UCHAR_MAX instead of CHAR_MIN to CHAR_MAX.
1017 2005-01-08  Erik Edelmann  <eedelman@gcc.gnu.org>
1019         PR fortran/25093
1020         * resolve.c (resolve_fntype): Check that PUBLIC functions
1021         aren't of PRIVATE type.
1023 2005-01-07  Tobias Schl"uter  <tobias.schlueter@physik.uni-muenchen.de>
1025         * decl.c (gfc_match_function_decl): Correctly error out in case of
1026         omitted function argument list.
1028 2006-01-07  Paul Thomas  <pault@gcc.gnu.org>
1030         PR fortran/22146
1031         * trans-array.c (gfc_reverse_ss): Remove static attribute.
1032         (gfc_walk_elemental_function_args): Replace gfc_expr * argument for
1033         the function call with the corresponding gfc_actual_arglist*.  Change
1034         code accordingly.
1035         (gfc_walk_function_expr): Call to gfc_walk_elemental_function_args
1036         now requires the actual argument list instead of the expression for
1037         the function call.
1038         * trans-array.h: Modify the prototype for gfc_walk_elemental_function_args
1039         and provide a prototype for gfc_reverse_ss.
1040         * trans-stmt.h (gfc_trans_call): Add the scalarization code for the case
1041         where an elemental subroutine has array valued actual arguments.
1043         PR fortran/25029
1044         PR fortran/21256
1045         PR fortran/20868
1046         PR fortran/20870
1047         * resolve.c (check_assumed_size_reference): New function to check for upper
1048         bound in assumed size array references.
1049         (resolve_assumed_size_actual): New function to do a very restricted scan
1050         of actual argument expressions of those procedures for which incomplete
1051         assumed size array references are not allowed.
1052         (resolve_function, resolve_call): Switch off assumed size checking of
1053         actual arguments, except for elemental procedures and intrinsic
1054         inquiry functions, in some circumstances.
1055         (resolve_variable): Call check_assumed_size_reference.
1057 2006-01-05  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1059         PR fortran/24268
1060         * io.c (next_char_not_space): New function that returns the next
1061         character that is not white space.
1062         (format_lex): Use the new function to skip whitespace within
1063         a format string.
1065 2006-01-05  Erik Edelmann  <eedelman@gcc.gnu.org>
1067         PR fortran/23675
1068         * expr.c (gfc_expr_set_symbols_referenced): New function.
1069         * gfortran.h: Add a function prototype for it.
1070         * resolve.c (resolve_function): Use it for
1071         use associated character functions lengths.
1072         * expr.c, gfortran.h, resolve.c: Updated copyright years.
1074 2006-01-03  Steven G. Kargl  <kargls@comcast.net>
1076         PR fortran/25101
1077         * resolve.c (resolve_forall_iterators):  Check for scalar variables;
1078         Check stride is nonzero.
1080 2006-01-02  Steven G. Kargl  <kargls@comcast.net>
1082         PR fortran/24640
1083         * parse.c (next_free): Check for whitespace after the label.
1084         * match.c (gfc_match_small_literal_int): Initialize cnt variable.
1086 2006-01-01  Steven G. Kargl  <kargls@comcast.net>
1088         * ChangeLog: Split previous years into ...
1089         * ChangeLog-2002: here.
1090         * ChangeLog-2003: here.
1091         * ChangeLog-2004: here.
1092         * ChangeLog-2005: here.