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