OSDN Git Service

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