OSDN Git Service

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