OSDN Git Service

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