OSDN Git Service

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