OSDN Git Service

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