OSDN Git Service

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