OSDN Git Service

PR fortran/29629
[pf3gnuchains/gcc-fork.git] / gcc / fortran / ChangeLog
1 2006-10-29  Jakub Jelinek  <jakub@redhat.com>
2
3         PR fortran/29629
4         * trans-openmp.c (gfc_trans_omp_array_reduction): Set attr.flavor
5         of init_val_sym and outer_sym to FL_VARIABLE.
6
7 2006-10-29  Kazu Hirata  <kazu@codesourcery.com>
8
9         * intrinsic.texi: Fix a typo.
10
11 2006-10-27  Steven G. Kargl  <kargl@gcc.gnu.org>
12
13         * gfortran.h: Remove GFC_MPFR_TOO_OLD.
14         * arith.c (arctangent2): Remove function
15         (gfc_check_real_range): Remove subnormal kludge.
16         * arith.h: Remove arctangent2 prototype.
17         * simplify.c: (gfc_simplify_atan2): Remove use of arctangent2.
18         (gfc_simplify_exponent, gfc_simplify_log, gfc_simplify_nearest,
19         gfc_simplify_rrspacing, gfc_simplify_spacing): Remove mpfr kludges.
20
21 2006-10-28  Tobias Burnus  <burnus@net-b.de>
22
23         PR fortran/28224
24         * io.c (check_io_constraints): Allow namelists
25           for internal files for Fortran 2003.
26
27 2006-10-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
28
29         PR fortran/27954
30         * decl.c (gfc_free_data_all): New function to free all data structures
31         after errors in DATA statements and declarations.
32         (top_var_list): Use new function.(top_val_list): Use new function.
33         (gfc_match_data_decl): Use new function.
34         * misc.c (gfc_typename): Fixed incorrect function name in error text. 
35
36 2006-10-24  Erik Edelmann  <eedelman@gcc.gnu.org>
37
38         PR fortran/29393
39         * expr.c (simplify_parameter_variable): Keep rank of original
40         expression.
41
42 2006-10-23 Rafael Avila de Espindola  <rafael.espindola@gmail.com>
43
44         * Make-lang.in (f951$(exeext)): Depend on and link with attribs.o.
45         * trans.h (builtin_function): Rename to gfc_builtin_function.
46         Change the signature.
47         * 95-lang.c (LANG_HOOKS_BUILTIN_FUNCTION): Define as
48         gfc_builtin_function.
49         (builtin_function): Rename to gfc_builtin_function. Move common
50         code to builtin_function.
51         (gfc_define_builtin): Replace calls to builtin_function with
52         gfc_define_builtin.
53
54 2006-10-22  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
55
56         PR fortran/26025
57         * lang.opt: Add -fexternal-blas and -fblas-matmul-limit options.
58         * options.c (gfc_init_options): Initialize new flags.
59         (gfc_handle_option): Handle new flags.
60         * gfortran.h (gfc_option): Add flag_external_blas and
61         blas_matmul_limit flags.
62         * trans-expr.c (gfc_conv_function_call): Use new argument
63         append_args, appending it at the end of the argument list
64         built for a function call.
65         * trans-stmt.c (gfc_trans_call): Use NULL_TREE for the new
66         append_args argument to gfc_trans_call.
67         * trans.h (gfc_conv_function_call): Update prototype.
68         * trans-decl.c (gfc_build_intrinsic_function_decls): Add
69         prototypes for BLAS ?gemm routines.
70         * trans-intrinsic.c (gfc_conv_intrinsic_funcall): Generate the
71         extra arguments given to the library matmul function, and give
72         them to gfc_conv_function_call.
73         * invoke.texi: Add documentation for -fexternal-blas and
74         -fblas-matmul-limit.
75
76 2006-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
77
78         * Make-lang.in (F95_LIBS): Delete.
79         * f951$(exeext): Use $(LIBS) instead of $(F95_LIBS).
80         * config-lang.in (need_gmp): Delete.
81
82 2006-10-19  Brooks Moses  <bmoses@stanford.edu>
83
84         * invoke.texi: Fixed "denormal" typo.
85
86 2006-10-19  Paul Thomas <pault@gcc.gnu.org>
87
88         PR fortran/29216
89         PR fortran/29314
90         * gfortran.h : Add EXEC_INIT_ASSIGN.
91         * dump-parse-tree.c (gfc_show_code_node): The same.
92         * trans-openmp.c (gfc_trans_omp_array_reduction): Set new
93         argument for gfc_trans_assignment to false.
94         * trans-stmt.c (gfc_trans_forall_1): The same.
95         * trans-expr.c (gfc_conv_function_call, gfc_trans_assign,
96         gfc_trans_arrayfunc_assign, gfc_trans_assignment): The
97         same. In the latter function, use the new flag to stop
98         the checking of the lhs for deallocation.
99         (gfc_trans_init_assign): New function.
100         * trans-stmt.h : Add prototype for gfc_trans_init_assign.
101         * trans.c (gfc_trans_code): Implement EXEC_INIT_ASSIGN.
102         * trans.h : Add new boolean argument to the prototype of
103         gfc_trans_assignment.
104         * resolve.c (resolve_allocate_exp): Replace EXEC_ASSIGN by
105         EXEC_INIT_ASSIGN.
106         (resolve_code): EXEC_INIT_ASSIGN does not need resolution.
107         (apply_default_init): New function.
108         (resolve_symbol): Call it for derived types that become
109         defined but which do not already have an initialization
110         expression..
111         * st.c (gfc_free_statement): Include EXEC_INIT_ASSIGN.
112
113 2006-10-16  Tobias Burnus  <burnus@net-b.de>
114
115         * primary.c: Revert 'significand'-to-'significant' comment change.
116         * invoke.texi (Warning Options): Minor cleanup for
117           -Wimplicit-interface.
118
119 2006-10-17  Paul Thomas <pault@gcc.gnu.org>
120
121         PR fortran/20541
122         * trans-array.c (gfc_trans_array_bounds): Test for and set
123         negative stride of a non-constant bound array to zero.
124
125         PR fortran/29392
126         * data.c (create_character_intializer): Copy and simplify
127         the expressions for the start and end of a sub-string
128         reference.
129
130 2006-10-16  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
131
132         * io.c (gfc_match_close): Ensure that status is terminated by
133         a NULL element.
134
135 2006-10-16  Tobias Burnus <burnus@net-b.de>
136
137         * trans-stmt.c: Fix a typo
138         * invoke.texi: Fix typos
139         * resolve.c: Fix a comment typo
140         * trans-decl.c: Fix a comment typo
141         * primary.c: Fix a comment typo
142
143 2006-10-15  Steven G. Kargl  <kargl@gcc.gnu.org>
144
145         PR fortran/29403
146         * io.c (match_io):  Check for a default-char-expr for PRINT format.
147
148 2006-10-15  Bernhard Fischer  <aldot@gcc.gnu.org>
149
150         PR fortran/24767
151         * lang.opt (Wunused-labels): Remove.
152         * options.c: Remove references to gfc_option.warn_unused_labels.
153         * gfortran.h: Remove variable warn_unused_labels.               
154         * resolve.c (warn_unused_fortran_label) : Use warn_unused_label
155         instead of gfc_option.warn_unused_labels.
156         * invoke.texi: Remove documentation of -Wunused-labels.
157
158 2006-10-14  Tobias Burnus  <burnus@net-b.de>
159
160         * gfortran.texi: Add link to GFortran apps
161         * intrinsic.texi: Updated documentation of ACCESS and CHMOD
162
163 2006-10-14  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
164
165         PR fortran/19261
166         * scanner.c (load_line): Add checks for illegal use of '&' and issue
167         warnings.  Issue errors with -pedantic.
168
169 2006-10-14 Paul Thomas <pault@gcc.gnu.org>
170
171         PR fortran/29371
172         * trans-expr.c (gfc_trans_pointer_assignment): Add the expression
173         for the assignment of null to the data field to se->pre, rather
174         than block.     
175
176 2006-10-14  Kazu Hirata  <kazu@codesourcery.com>
177
178         * intrinsic.texi: Fix typos.
179         * trans-array.c: Fix a comment typo.
180
181 2006-10-13  Brooks Moses  <bmoses@stanford.edu>
182
183         * intrinsic.texi (STAT): Reverted a format in example code to
184         octal; noted this in accompanying string.
185
186 2006-10-13 Paul Thomas <pault@gcc.gnu.org>
187
188         PR fortran/29373
189         * decl.c (get_proc_name, gfc_match_function_decl): Add
190         attr.implicit_type to conditions that throw error for
191         existing explicit interface and that allow new type-
192         spec to be applied.
193
194         PR fortran/29407
195         * resolve.c (resolve_fl_namelist): Do not check for
196         namelist/procedure conflict, if the symbol corresponds
197         to a good local variable declaration.
198
199         PR fortran/27701
200         * decl.c (get_proc_name): Replace the detection of a declared
201         procedure by the presence of a formal argument list by the
202         attributes of the symbol and the presence of an explicit
203         interface.
204
205         PR fortran/29232
206         * resolve.c (resolve_fl_variable): See if the host association
207         of a derived type is blocked by the presence of another type I
208         object in the current namespace.
209
210         PR fortran/29364
211         * resolve.c (resolve_fl_derived): Check for the presence of
212         the derived type for a derived type component.
213
214         PR fortran/24398
215         * module.c (gfc_use_module): Check that the first words in a
216         module file are 'GFORTRAN module'.
217
218         PR fortran/29422
219         * resolve.c (resolve_transfer): Test functions for suitability
220         for IO, as well as variables.
221
222         PR fortran/29428
223         * trans-expr.c (gfc_trans_scalar_assign): Remove nullify of
224         rhs expression.
225
226 2006-10-13  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
227
228         PR fortran/29391
229         * trans-intrinsic.c (gfc_conv_intrinsic_bound): Generate correct
230         code for LBOUND and UBOUND intrinsics.
231
232 2006-10-13  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
233
234         PR fortran/21435
235         * io.c (compare_to_allowed_values): New function.
236         (gfc_match_open): Add checks for constant values of specifiers.
237         (gfc_match_close): Add checks for constant values of the STATUS
238         specifier.
239
240 2006-10-12  Brooks Moses  <bmoses@stanford.edu>
241
242         * intrinsic.texi (STAT): Fixed a format typo in sample code.
243
244 2006-10-12  Brooks Moses  <bmoses@stanford.edu>
245
246         * intrinsic.texi (STAT): Shortened lines in sample code.
247
248 2006-10-11  Tobias Schlueter  <tobias.schlueter@physik.uni-muenchen.de>
249
250         * gfortran.h (gfc_show_actual_arglist, gfc_show_array_ref,
251         gfc_show_array_spec, gfc_show_attr, gfc_show_code,
252         gfc_show_components, gfc_show_constructor, gfc_show_equiv,
253         gfc_show_expr, gfc_show_namelist, gfc_show_ref, gfc_show_symbol,
254         gfc_show_typespec): Add prototypes.
255         * dump-parse-tree.c (gfc_show_actual_arglist, gfc_show_array_ref,
256         gfc_show_array_spec, gfc_show_attr, gfc_show_code,
257         gfc_show_components, gfc_show_constructor, gfc_show_equiv,
258         gfc_show_expr, gfc_show_namelist, gfc_show_ref, gfc_show_symbol,
259         gfc_show_typespec): Remove 'static' from declaration.
260
261 2006-10-10  Brooks Moses  <bmoses@stanford.edu>
262
263         * invoke.texi, gfortran.texi: Corrected erronous dashes.
264
265 2006-10-10  Brooks Moses  <bmoses@stanford.edu>
266
267         * Make-lang.in: Added "fortran.pdf", "gfortran.pdf" target
268         support.
269
270 2006-10-10  Daniel Franke  <franke.daniel@gmail.com>
271
272         * intrinsic.texi: added documentation for FSTAT, GETARG,GET_COMMAND,
273         GET_COMMAND_ARGUMENT, GETENV, GET_ENVIRONMENT_VARIABLE, IAND, IARGC,
274         LSTAT and STAT, removed the reference to PR19292 from ACCESS, CHMOD,
275         GMTIME, LSHIFT, LTIME, RSHIFT.
276
277 2006-10-10  Brooks Moses  <bmoses@stanford.edu>
278
279         * gfortran.texi (Standards): Update to current status.
280
281 2006-10-09  Brooks Moses  <bmoses@stanford.edu>
282
283         * Make-lang.in: Added intrinsic.texi to GFORTRAN_TEXI
284         dependences.
285
286 2006-10-09  Brooks Moses  <bmoses@stanford.edu>
287
288         * intrinsic.texi (MOVE_ALLOC): changed "Options" to "Standards".
289
290 2006-10-09  Steven G. Kargl  <kargl@gcc.gnu.org>
291
292         * gfortran.h: Define GFC_MPFR_TOO_OLD via mpfr version info.
293         * arith.c (arctangent, gfc_check_real_range): Use it.   
294         * simplify.c (gfc_simplify_atan2, gfc_simplify_exponent,
295         gfc_simplify_log, gfc_simplify_nearest): Use it.
296
297         PR fortran/15441
298         PR fortran/29312
299         * iresolve.c (gfc_resolve_rrspacing): Give rrspacing library
300         routine hidden precision argument.
301         (gfc_resolve_spacing): Give spacing library routine hidden
302         precision, emin - 1, and tiny(x) arguments.
303         * simplify.c (gfc_simplify_nearest): Remove explicit subnormalization.
304         (gfc_simplify_rrspacing): Implement formula from Fortran 95 standard.
305         (gfc_simplify_spacing): Implement formula from Fortran 2003 standard.
306         * trans-intrinsic.c (gfc_intrinsic_map_t) Declare rrspacing and
307         spacing via LIBF_FUNCTION
308         (prepare_arg_info, call_builtin_clz, gfc_conv_intrinsic_spacing,
309         gfc_conv_intrinsic_rrspacing): Remove functions.
310         (gfc_conv_intrinsic_function): Remove calls to
311         gfc_conv_intrinsic_spacing and gfc_conv_intrinsic_rrspacing.
312         * f95-lang.c (gfc_init_builtin_functions): Remove __builtin_clz,
313         __builtin_clzl and __builtin_clzll
314
315 2006-10-09  Richard Henderson  <rth@redhat.com>
316
317         Revert emutls patch.
318
319 2006-10-09  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
320
321         * intrinsic.c (add_sym_0s, add_sym_1s, add_sym_2s, add_sym_3s,
322         add_sym_4s, add_sym_5s, add_functions): Use macro ACTUAL_NO,
323         ACTUAL_YES, NOT_ELEMENTAL and ELEMENTAL instead of constants
324         0 and 1 as second and third arguments to add_sym* functions.
325
326 2006-10-08  Erik Edelmann <edelmann@gcc.gnu.org>
327             Paul Thomas <pault@gcc.gnu.org>
328
329         PR fortran/20541
330         * interface.c (gfc_compare_derived_types): Add comparison of
331         the allocatable field.
332         * intrinsic.c (add_subroutines): Add MOVE_ALLOC.
333         * trans-expr.c (gfc_conv_aliased_arg, gfc_trans_subarray_assign,
334         gfc_trans_subcomponent_assign, gfc_conv_string_parameter,
335         gfc_trans_scalar_assign): Add extra arguments l_is_temp
336         and r_is_var to references to latter function.
337         (gfc_conv_function_call): Add enum for types of argument and
338         an associated variable parm_kind. Deallocate components of
339         INTENT(OUT) and non-variable arrays.
340         (gfc_trans_subcomponent_assign): Add block to assign arrays
341         to allocatable components.
342         (gfc_trans_scalar_assign): Add block to handle assignments of
343         derived types with allocatable components, using the above new
344         arguments to control allocation/deallocation of memory and the
345         copying of allocated arrays.
346         * trans-array.c (gfc_array_allocate): Remove old identification 
347         of pointer and replace with that of an allocatable array. Add
348         nullify of structures with allocatable components. 
349         (gfc_conv_array_initializer): Treat EXPR_NULL.
350         (gfc_conv_array_parameter): Deallocate allocatable components
351         of non-variable structures.
352         (gfc_trans_dealloc_allocated): Use second argument of library
353         deallocate to inhibit, without error, freeing NULL pointers.
354         (get_full_array_size): New function to return the size of a
355         full array.
356         (gfc_duplicate_allocatable): New function to allocate and copy
357         allocated data.
358         (structure_alloc_comps): New recursive function to deallocate,
359         nullify or copy allocatable components.
360         (gfc_nullify_alloc_comp, gfc_deallocate_alloc_comp,
361         gfc_copy_alloc_comp): New interface functions to call previous.
362         (gfc_trans_deferred_array): Add the code to nullify allocatable
363         components, when entering scope, and to deallocate them on
364         leaving. Do not call gfc_trans_static_array_pointer and return
365         for structures with allocatable components and default
366         initializers.
367         * symbol.c (gfc_set_component_attr): Set allocatable field.
368         (gfc_get_component_attr): Set the allocatable attribute.
369         * intrinsic.h : Prototype for gfc_check_move_alloc.
370         * decl.c (build_struct): Apply TR15581 constraints for
371         allocatable components.
372         (variable_decl): Default initializer is always NULL for
373         allocatable components.
374         (match_attr_spec): Allow, or not, allocatable components,
375         according to the standard in force.
376         * trans-array.h : Prototypes for gfc_nullify_alloc_comp,
377         gfc_deallocate_alloc_comp, gfc_copy_alloc_comp and
378         gfc_duplicate_allocatable.
379         * gfortran.texi : Add mention of TR15581 extensions.
380         * gfortran.h : Add attribute alloc_comp, add
381         gfc_components field allocatable and add the prototype
382         for gfc_expr_to_initialize.
383         * trans-stmt.c (generate_loop_for_temp_to_lhs,
384         generate_loop_for_rhs_to_temp, gfc_trans_where_assign,
385         gfc_trans_where_3): Add extra arguments to calls to
386         gfc_trans_scalar_assign and set appropriately.
387         (gfc_trans_allocate): Nullify allocatable components.
388         (gfc_trans_deallocate): Deallocate to ultimate allocatable
389         components but stop at ultimate pointer components.
390         * module.c (mio_symbol_attribute, mio_symbol_attribute,
391         mio_component): Add module support for allocatable
392         components.
393         * trans-types.c (gfc_get_derived_type): Treat allocatable
394         components.
395         * trans.h : Add two boolean arguments to
396         gfc_trans_scalar_assign.
397         * resolve.c (resolve_structure_cons): Check conformance of
398         constructor element and the component.
399         (resolve_allocate_expr): Add expression to nullify the
400         constructor expression for allocatable components.
401         (resolve_transfer): Inhibit I/O of derived types with
402         allocatable components.
403         (resolve_fl_derived): Skip check of bounds of allocatable
404         components.
405         * trans-decl.c (gfc_get_symbol_decl): Add derived types
406         with allocatable components to deferred variable.
407         (gfc_trans_deferred_vars): Make calls for derived types
408         with allocatable components to gfc_trans_deferred_array.
409         (gfc_generate_function_code): Nullify allocatable
410         component function result on entry.
411         * parse.c (parse_derived): Set symbol attr.allocatable if
412         allocatable components are present.
413         * check.c (gfc_check_allocated): Enforce attr.allocatable
414         for intrinsic arguments.
415         (gfc_check_move_alloc): Check arguments of move_alloc.
416         * primary.c (gfc_variable_attr): Set allocatable attribute.
417         * intrinsic.texi : Add index entry and section for
418         for move_alloc.
419
420 2006-10-08  Paul Thomas <pault@gcc.gnu.org>
421
422         PR fortran/29115
423         * resolve.c (resolve_structure_cons): It is an error if the
424         pointer component elements of a derived type constructor are
425         not pointer or target.
426
427
428         PR fortran/29211
429         * trans-stmt.c (generate_loop_for_temp_to_lhs,
430         generate_loop_for_rhs_to_temp): Provide a string length for
431         the temporary by copying that of the other side of the scalar
432         assignment.
433
434 2006-10-08  Tobias Burnus  <burnus@net-b.de>
435
436         PR fortran/28585
437         * intrinsic.c (add_functions): Add new_line Fortran 2003 intrinsic.
438         * intrinsic.h: Add gfc_simplify_new_line and gfc_check_new_line
439         prototypes.
440         * check.c (gfc_check_new_line): New function.
441         * simplify.c (gfc_simplify_new_line): New function.
442         * intrinsic.texi: Document new_line intrinsic.
443
444 2006-10-07  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
445
446         PR fortran/16580
447         PR fortran/29288
448         * gcc/fortran/intrinsic.c (add_sym): Define the actual_ok when a
449         gfc_intrinsic_sym structure is filled.
450         (gfc_intrinsic_actual_ok): New function.
451         (add_sym_0s, add_sym_1s, add_sym_2s, add_sym_3s, add_sym_4s,
452         add_sym_5s): Intrinsic subroutines are not allowed as actual
453         arguments, so we remove argument actual_ok.
454         (add_functions): Correct the values for actual_ok of all intrinsics.
455         Add comments for gfc_check_access_func and gfc_resolve_index_func.
456         (add_subroutines): Remove the actual_ok argument, which was never used.
457         * gcc/fortran/intrinsic.h (gfc_intrinsic_actual_ok): New prototype.
458         * gcc/fortran/gfortran.h (gfc_resolve_index_func): New prototype.
459         * gcc/fortran/resolve.c (resolve_actual_arglist): Check whether
460         an intrinsic used as an argument list is allowed there.
461         * gcc/fortran/iresolve.c (gfc_resolve_index_func): New function.
462         (gfc_resolve_len): Change intrinsic function name to agree with
463         libgfortran.
464         * gcc/fortran/trans-decl.c (gfc_get_extern_function_decl): Add
465         new case, because some specific intrinsics take 3 arguments.
466         * gcc/fortran/intrinsic.texi: DIMAG is a GNU extension.
467
468 2006-10-06  Jakub Jelinek  <jakub@redhat.com>
469
470         PR fortran/28415
471         * trans-decl.c (gfc_finish_var_decl): With -fno-automatic, don't
472         make artificial variables or pointer to variable automatic array
473         TREE_STATIC.
474
475         * scanner.c (skip_free_comments): Return bool instead of void.
476         (gfc_next_char_literal): Don't return ' ' if & is missing after
477         !$omp or !$.  Use skip_{free,fixed}_comments directly instead
478         of gfc_skip_comments.
479
480 2006-10-04  Brooks Moses  <bmoses@stanford.edu>
481
482         * gfortran.texi: (Current Status): update and rewrite to reflect
483         actual status more accurately.
484
485 2006-10-04  Brooks Moses  <bmoses@stanford.edu>
486
487         * gfortran.texi: Consistently refer to the compiler as "GNU
488         Fortran".
489         * intrinsic.texi: Ditto.
490         * invoke.texi: Ditto.
491
492 2006-10-04  Richard Henderson  <rth@redhat.com>
493             Jakub Jelinek  <jakub@redhat.com>
494
495         * f95-lang.c (gfc_init_builtin_functions): Add __emutls_get_address
496         and __emutls_register_common.
497         * openmp.c (gfc_match_omp_threadprivate): Don't error if !have_tls.
498         * trans-common.c (build_common_decl): Don't check have_tls.
499         * trans-decl.c (gfc_finish_var_decl): Likewise.
500         * types.def (BT_WORD, BT_FN_PTR_PTR): New.
501         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
502
503 2006-10-04  Paul Thomas <pault@gcc.gnu.org>
504
505         PR fortran/29343
506         * resolve.c (resolve_allocate_expr): Exclude derived types from
507         search for dependences between allocated variables and the
508         specification expressions for other allocations in the same
509         statement.
510
511 2006-10-04  Paul Thomas  <pault@gcc.gnu.org>
512
513         PR fortran/29098
514         * resolve.c (resolve_structure_cons): Do not return FAILURE if
515         component expression is NULL.
516
517 2006-10-03  Paul Thomas  <pault@gcc.gnu.org>
518
519         PR fortran/20779
520         PR fortran/20891
521         * resolve.c (find_sym_in_expr): New function that returns true
522         if a symbol is found in an expression.
523         (resolve_allocate_expr): Check whether the STAT variable is
524         itself allocated in the same statement.  Use the call above to
525         check whether any of the allocated arrays are used in array
526         specifications in the same statement.
527
528 2006-10-03  Steven G. Kargl  <kargl@gcc.gnu.org>
529
530         * arith.c (gfc_check_real_range):  Use correct exponent range for
531         subnormal numbers.
532
533 2006-10-03  Paul Thomas  <pault@gcc.gnu.org>
534
535         PR fortran/29284
536         PR fortran/29321
537         PR fortran/29322
538         * trans-expr.c (gfc_conv_function_call): Check the expression
539         and the formal symbol are present when testing the actual
540         argument.
541
542         PR fortran/25091
543         PR fortran/25092
544         * resolve.c (resolve_entries): It is an error if the entries
545         of an array-valued function do not have the same shape.
546
547 2006-10-03  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
548
549         PR middle-end/27478
550         * trans-decl.c (gfc_get_fake_result_decl): Mark var as
551         TREE_ADDRESSABLE.
552
553 2006-10-02  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
554
555         PR fortran/19262
556         * gfortran.h (gfc_option_t): Add max_continue_fixed and
557         max_continue_free.
558         * options.c (gfc_init_options): Initialize fixed form and free form
559         consecutive continuation line limits.
560         * scanner.c (gfc_scanner_init_1): Initialize continue_line
561         and continue_count. (gfc_next_char_literal): Count the number of
562         continuation lines in the current statement and warn if limit
563         is exceeded.
564
565 2006-10-02  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
566
567         PR fortran/19260
568         * scanner.c (gfc_next_char_literal): Add check for missing '&'
569         and warn if in_string, otherwise return ' '.
570
571 2006-10-02  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
572
573         PR fortran/29210
574         * primary.c (match_sym_complex_part): Named constants as real or
575         imaginary part of complex a named constant are only allowed in
576         Fortran 2003.
577
578 2006-10-01  Brooks Moses  <bmoses@stanford.edu>
579
580         * gfortran.texi: Corrected references to MALLOC intrinsic.
581         * invoke.texi: Minor cleanup and clarification to the Dialect
582         Options section.
583
584 2006-09-30  Brooks Moses  <bmoses@stanford.edu>
585
586         * invoke.texi:  Add mention of BOZ constants and integer
587         overflow to -fno-range-check.
588         * gfortran.texi:  Add mention of -fno-range-check to
589         section on BOZ contants.
590
591 2006-09-30  Bernhard Fischer  <aldot@gcc.gnu.org>
592
593         * resolve.c: Fix commentary typo.  Fix whitespace.
594
595 2006-09-28  Steven G. Kargl  <kargl@gcc.gnu.org>
596
597         fortran/29147
598         * arith.c (gfc_check_integer_range): Disable range checking via
599         -fno-range-check.
600
601 2006-09-28  Steven G. Kargl <kargl@gcc.gnu.org>
602
603         * arith.c: Change conditional test for inclusion of arctangent().
604         (gfc_check_real_range): Change conditional test for use of
605         mpfr_subnormalize.
606         * simplify.c (gfc_simplify_atan2): Fix conditional for use of
607         mpfr_atan2() instead of arctangent().
608         (gfc_simplify_exponent): Fix conditional for use of mpfr_get_exp().
609         (gfc_simplify_log): Fix conditional for use of mpfr_atan2() instead
610          of arctangent().
611         (gfc_simplify_nearest): Fix conditional for use of mpfr_nextafter(). 
612
613 2006-09-27  Steven G. Kargl  <kargl@gcc.gnu.org>
614
615         * arith.c: Conditionally include arctangent2().
616         (gfc_check_real_range): Use mpfr_subnormalize in preference to local
617         hack.
618         * trans-intrinsic.c (gfc_get_intrinsic_lib_fndecl): Append
619         l for long double functions.
620         * simplify.c: Wrap Copyright to new line.
621         (gfc_simplify_atan2): Use mpfr_atan2 in preference to arctangent2().
622         (gfc_simplify_log): Ditto.
623
624
625         PR fortran/28276
626         * simplify.c (gfc_simplify_exponent): Use mpfr_get_exp in
627         preference to broken local hack.
628
629         PR fortran/27021
630         * simplify.c (gfc_simplify_nearest): Use mpfr_nexttoward and
631         mpfr_subnormalize to handle numbers near zero in preference to broken
632          local hack.
633
634 2006-09-26  Jakub Jelinek  <jakub@redhat.com>
635
636         PR fortran/29097
637         * scanner.c (include_line): Handle conditional include.
638
639 2006-09-25  Tobias Schluter  <tobias.schlueter@physik.uni-muenchen.de>
640
641         PR fortran/21203
642         * error.c (show_loci): No need to risk an ICE to output a
643         slightly nicer error message.
644
645 2006-09-19 Paul Thomas <pault@gcc.gnu.org>
646            Steven Bosscher  <steven@gcc.gnu.org>
647
648         PR fortran/29101
649         * trans-stmt.c (gfc_trans_character_select): Store the label
650         from select_string and then clean up any temporaries from the
651         conversion of the select expression, before branching to the
652         selected case.
653
654 2006-09-18 Paul Thomas <pault@gcc.gnu.org>
655
656         PR fortran/28526
657         * primary.c (match_variable): If the compiler is in a module
658         specification block, an interface block or a contains section,
659         reset host_flag to force the changed symbols mechanism.
660
661         PR fortran/29101
662         * trans-stmt.c (gfc_trans_character_select): Add the post block
663         for the expression to the main block, after the call to
664         select_string and the last label.
665
666 2006-09-18  Paul Thomas  <pault@gcc.gnu.org>
667
668         PR fortran/29060
669         * iresolve.c (resolve_spread): Build shape for result if the
670         source shape is available and dim and ncopies are constants.
671
672 2006-09-18  Tobias Schl\81üter  <tobias.schlueter@physik.uni-muenchen.de>
673
674         PR fortran/28817
675         PR fortran/21918
676         * trans-decl.c (generate_local_decl): Change from 'warning' to
677         'gfc_warning' to have line numbers correctly reported.
678
679 2006-09-15  Paul Thomas  <pault@gcc.gnu.org>
680
681         PR fortran/29051
682         * decl.c (match_old_style_init): Set the 'where' field of the
683         gfc_data structure 'newdata'.
684
685         * match.c (match_case_eos): Add a comprehensible error message.
686
687 2006-09-13  Wolfgang Gellerich  <gellerich@de.ibm.com>
688
689         * trans-expr.c (gfc_add_interface_mapping): For characters, dereference
690         pointer if necessary and then perform the cast.
691
692 2006-09-11  Steven G. Kargl  <kargl@gcc.gnu.org>
693
694         * intrinsic.c: Update Copyright date.
695         * intrinsic.h: Ditto.
696
697 2006-09-11  Paul Thomas  <pault@gcc.gnu.org>
698
699         PR fortran/28890
700         * trans-expr.c (gfc_conv_function_call): Obtain the string length
701         of a dummy character(*) function from the symbol if it is not
702         already translated.  For a call to a character(*) function, use
703         the passed, hidden string length argument, which is available
704         from the backend_decl of the formal argument.
705         * resolve.c (resolve_function): It is an error if a function call
706         to a character(*) function is other than a dummy procedure or
707         an intrinsic.
708
709 2006-09-10  Paul Thomas  <pault@gcc.gnu.org>
710
711         PR fortran/28959
712         * trans-types.c (gfc_get_derived_type): Use the parent namespace of
713         the procedure if the type's own namespace does not have a parent.
714
715 2006-09-10  Paul Thomas  <pault@gcc.gnu.org>
716
717         PR fortran/28923
718         * expr.c (find_array_section): Only use the array lower and upper
719         bounds for the start and end of the sections, where the expr is
720         NULL.
721
722 2006-09-10  Paul Thomas <pault@gcc.gnu.org>
723
724         PR fortran/28914
725         * trans-array.c (gfc_trans_array_constructor_value): Create a temporary
726         loop variable to hold the current loop variable in case it is modified
727         by the array constructor.
728
729 2006-09-07  Steven G. Kargl  <kargls@comcast.net>
730
731         * gfortran.h (gfc_integer_info): Eliminate max_int.
732         * arith.c (gfc_arith_init_1): Remove initialization of max_int.
733         (gfc_arith_done_1): Remove clearing of max_int.
734         (gfc_check_integer_range): Fix range chekcing of overflow.
735         * simplify.c (gfc_simplify_not): Construct mask that was max_int.
736
737 2006-09-05  Paul Thomas <pault@gcc.gnu.org>
738
739         PR fortran/28908
740         * gfortran.h : Restore the gfc_dt_list structure and reference
741         to it in gfc_namespace.
742         * resolve.c (resolve_fl_derived): Restore the building of the
743         list of derived types for the current namespace. Modify the
744         restored code so that a check is made to see if the symbol is
745         already in the list.
746         (resolve_fntype): Make sure that the specification block
747         version of the derived type is used for a module function that
748         returns that type. 
749         * symbol.c (gfc_free_dt_list): Restore.
750         (gfc_free_namespace): Restore call to previous.
751         * trans-types.c (copy_dt_decls_ifequal): Restore.
752         (gfc_get_derived_type): Restore all the paraphenalia for
753         association of derived types, including calls to previous.
754         Modify the restored code such that all derived types are built
755         if their symbols are found in the parent namespace; not just
756         non-module types.  Add backend_decls to like derived types in
757         sibling namespaces, as well as that of the derived type.
758
759 2006-08-30  Kazu Hirata  <kazu@codesourcery.com>
760
761         * match.c: Fix a comment typo.
762
763 2006-08-30  Paul Thomas  <pault@gcc.gnu.org>
764
765         PR fortran/28885
766         * trans-expr.c (gfc_conv_aliased_arg): Ensure that the temp
767         declaration is retained for INTENT(OUT) arguments.
768
769         PR fortran/28873
770         PR fortran/20067
771         * resolve.c (resolve_generic_f): Make error message more
772         comprehensible.
773         (resolve_generic_s): Restructure search for specific procedures
774         to be similar to resolve_generic_f and change to similar error
775         message.  Ensure that symbol reference is refreshed, in case
776         the search produces a NULL.
777         (resolve_specific_s): Restructure search, as above and as
778         resolve_specific_f. Ensure that symbol reference is refreshed,
779         in case the search produces a NULL.
780
781         PR fortran/25077
782         PR fortran/25102
783         * interface.c (check_operator_interface): Throw error if the
784         interface assignment tries to change intrinsic type assigments
785         or has less than two arguments.  Also, it is an error if an
786         interface operator contains an alternate return.
787
788         PR fortran/24866
789         * parse.c (gfc_fixup_sibling_symbols): Do not modify the symbol
790         if it is a dummy in the contained namespace.
791
792 2006-08-29  Steven G. Kargl  <kargls@comcast.net>
793
794         PR fortran/28866
795         * match.c: Wrap copyright.
796         (gfc_match_assignment):  Return MATCH_NO for failed lvalue.  Remove
797         gotos.  Move error handling of FL_PARAMETER to ...
798         * gfc_match_if: Deal with MATCH_NO from above.
799         * primary.c: Wrap copyright.
800         (match_variable): ... here.  Improve error messages.
801
802 2006-08-29  Paul Thomas  <pault@gcc.gnu.org>
803
804         PR fortran/28788
805         * symbol.c (gfc_use_derived): Never eliminate the symbol,
806         following reassociation of use associated derived types.
807
808 2006-08-26  Steven G. Kargl  <kargls@comcast.net>
809
810         * arith.h: Update Copyright dates.  Fix whitespace.
811         * arith.c: Update Copyright dates.  Fix whitespace.  Fix comments.
812         (gfc_arith_done_1): Clean up pedantic_min_int and subnormal.
813
814 2006-08-26  Tobias Burnus  <burnus@net-b.de>
815
816         * gfortran.texi: Note variable initialization causes SAVE attribute.
817         * intrinsic.texi: Clarify support for KIND=16 and KIND=10.
818         Mention -std=f2003.  Cross reference INQUIRE from ACCESS intrinsic.
819         Add missing ) in ACOS.
820
821 2006-08-26  Daniel Franke  <franke.daniel@gmail.com>
822
823         * intrinsic.texi: Update Copyright date.  Added documentation
824         for ACOSH, AND, ASINH, ATANH, CHDIR, FGET, FGETC, FPUT, FPUTC,
825         GETCWD, OR and XOR intrinsics, removed inadvertently introduced
826         doc-stubs for EQV and NEQV, corrected some typographical errors.
827
828 2006-08-24  Daniel Franke  <franke.daniel@gmail.com>,
829             Brooks Moses  <bmoses@stanford.edu>
830
831         * intrinsic.texi: Added doc-stubs for undocumented intrinsics,
832         added a "See Also" section, renamed the "Options" section to
833         "Standard", improved the index, and made numerous minor
834         typo corrections and grammatical fixes.
835
836 2006-08-24  Paul Thomas  <pault@gcc.gnu.org>
837
838         PR fortran/28788
839         * symbol.c (shift_types): Shift the derived type references in
840         formal namespaces.
841         (gfc_use_derived): Return if the derived type symbol is already
842         in another namspace.  Add searches for the derived type in
843         sibling namespaces.
844
845         PR fortran/28771
846         * decl.c (add_init_expr_to_sym): Restore the original but
847         restricted to parameter arrays to fix a regression.
848
849 2006-08-23  Steven G. Kargl  <kargls@comcast.net>
850
851         * gfortran.texi:  Fix last commit where a "no" was deleted and
852         a grammatical error was introduced.
853
854 2006-08-23  Steven G. Kargl  <kargls@comcast.net>
855
856         * gfortran.texi:  Spell check.  Add a few contributors to
857         Chapter 9.  Expand the description of BOZ constant handling.
858
859 2006-08-20  Janne Blomqvist  <jb@gcc.gnu.org>
860
861         PR fortran/25828
862         * gfortran.texi: Mention STREAM I/O among supported F2003
863         features.
864
865 2006-08-20  Paul Thomas  <pault@gcc.gnu.org>
866
867         PR fortran/28601
868         PR fortran/28630
869         * gfortran.h : Eliminate gfc_dt_list structure and reference
870         to it in gfc_namespace.
871         * resolve.c (resolve_fl_derived): Remove the building of the
872         list of derived types for the current namespace.
873         * symbol.c (find_renamed_type): New function to find renamed
874         derived types by symbol name rather than symtree name.
875         (gfc_use_derived): Search parent namespace for identical
876         derived type and use it, even if local version is complete,
877         except in interface bodies. Ensure that renamed derived types
878         are found by call to find_renamed_type. Recurse for derived
879         type components.
880         (gfc_free_dt_list): Remove.
881         (gfc_free_namespace): Remove call to previous.
882         * trans-types.c (copy_dt_decls_ifequal): Remove.
883         (gfc_get_derived_type): Remove all the paraphenalia for
884         association of derived types, including calls to previous.
885         * match.c (gfc_match_allocate): Call gfc_use_derived to
886         associate any derived types that are being allocated.
887
888         PR fortran/20886
889         * resolve.c (resolve_actual_arglist): The passing of
890         a generic procedure name as an actual argument is an
891         error.
892
893         PR fortran/28735
894         * resolve.c (resolve_variable): Check for a symtree before
895         resolving references.
896
897         PR fortran/28762
898         * primary.c (match_variable): Return MATCH_NO if the symbol
899         is that of the program.
900
901         PR fortran/28425
902         * trans-expr.c (gfc_trans_subcomponent_assign): Translate
903         derived type component expressions other than another derived
904         type constructor.
905
906         PR fortran/28496
907         * expr.c (find_array_section): Correct errors in
908         the handling of a missing start value for the
909         index triplet in an array reference.
910
911         PR fortran/18111
912         * trans-decl.c (gfc_build_dummy_array_decl): Before resetting
913         reference to backend_decl, set it DECL_ARTIFICIAL.
914         (gfc_get_symbol_decl): Likewise for original dummy decl, when
915         a copy is made of an array.
916         (create_function_arglist): Likewise for the _entry paramter
917         in entry_masters.
918         (build_entry_thunks): Likewise for dummies in entry thunks.
919
920         PR fortran/28600
921         * trans-decl.c (gfc_get_symbol_decl): Ensure that the
922         DECL_CONTEXT of the length of a character dummy is the
923         same as that of the symbol declaration.
924
925         PR fortran/28771
926         * decl.c (add_init_expr_to_sym): Remove setting of charlen for
927         an initializer of an assumed charlen variable.
928
929         PR fortran/28660
930         * trans-decl.c (generate_expr_decls): New function.
931         (generate_dependency_declarations): New function.
932         (generate_local_decl): Call previous if not either a dummy or
933         a declaration in an entry master.
934
935 2006-08-19  Erik Edelmann  <eedelman@gcc.gnu.org>
936
937         PR fortran/25217
938         * resolve.c (resolve_fl_variable): Set a default initializer for
939         derived types with INTENT(OUT) even if 'flag' is true.
940         * trans-expr.c (gfc_conv_function_call): Insert code to
941         reinitialize INTENT(OUT) arguments of derived type with default
942         initializers.
943
944 2006-08-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
945
946         PR fortran/25828
947         * gfortran.h: Add new pointer for stream position to st_inquire.
948         Rename gfc_large_io_int_kind to gfc_intio_kind.
949         * trans-types.c (gfc_init_kinds): use gfc_intio_kind.
950         * io.c: Add new IO tag for file position going in and another for out.
951         (match_dt_element): Match new tag_spos.
952         (gfc_resolve_dt): Resolve new tag_spos.
953         (gfc_free_inquire): Free inquire->strm_pos.
954         (match_inquire_element): Match new tag_strm_out.
955         (gfc_resolve_inquire): Resolve new tag_strm_out.
956         * trans-io.c: Rename IOPARM_type_large_io_int to IOPARM_type_intio.
957         (gfc_build_st_parameter): Same.
958         (gfc_build_io_library_fndecls) Same. and add build pointer type pintio.
959         (gfc_trans_inquire): Translate strm_pos for inquire.
960         * ioparm.def: Reorder flags to accomodate addition of new inquire
961         flag for strm_pos_out and add it in.
962
963 2006-08-06  Paul Thomas  <pault@gcc.gnu.org>
964
965         PR fortran/28590
966         * parse.c (parse_derived): Remove the test for sequence type
967         components of a sequence type.
968         * resolve.c (resolve_fl_derived): Put the test here so that
969         pointer components are tested.
970
971 2006-08-05  Steven G. Kargl <kargls@comcast.nt>
972
973         PR fortran/28548
974         * resolve.c(resolve_elemental_actual): Add flags.h to use -pedantic
975         and exclude conversion functions in conditional.  Change gfc_error
976         to gfc_warning.
977         (warn_unused_label) Rename to ...
978         (warn_unused_fortran_label) avoid warn_unused_label in flags.h.
979
980 2006-07-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
981
982         * intrinsic.c (add_functions): Add ACCESS, CHMOD, RSHIFT, LSHIFT.
983         (add_subroutines): Add LTIME, GMTIME and CHMOD.
984         * intrinsic.h (gfc_check_access_func, gfc_check_chmod,
985         gfc_check_chmod_sub, gfc_check_ltime_gmtime, gfc_simplify_rshift,
986         gfc_simplify_lshift, gfc_resolve_access, gfc_resolve_chmod,
987         gfc_resolve_rshift, gfc_resolve_lshift, gfc_resolve_chmod_sub,
988         gfc_resolve_gmtime, gfc_resolve_ltime): Add prototypes.
989         * gfortran.h (gfc_generic_isym_id): Add GFC_ISYM_ACCESS,
990         GFC_ISYM_CHMOD, GFC_ISYM_LSHIFT, GFC_ISYM_RSHIFT.
991         * iresolve.c (gfc_resolve_access, gfc_resolve_chmod,
992         gfc_resolve_rshift, gfc_resolve_lshift, gfc_resolve_chmod_sub,
993         gfc_resolve_gmtime, gfc_resolve_ltime): New functions.
994         * check.c (gfc_check_access_func, gfc_check_chmod,
995         gfc_check_chmod_sub, gfc_check_ltime_gmtime): New functions.
996         * trans-intrinsic.c (gfc_conv_intrinsic_rlshift): New function.
997         (gfc_conv_intrinsic_function): Add cases for the new GFC_ISYM_*.
998
999 2006-07-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1000
1001         * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.
1002
1003 2006-07-26  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1004
1005         * intrinsic.c (add_functions): Add INT2, SHORT, INT8, LONG,
1006         LSTAT, MCLOCK and MCLOCK8 intrinsic functions.
1007         (add_subroutines): Add LSTAT intrinsic subroutine.
1008         * gfortran.h (gfc_generic_isym_id): Add GFC_ISYM_INT2,
1009         GFC_ISYM_INT8, GFC_ISYM_LONG, GFC_ISYM_LSTAT, GFC_ISYM_MCLOCK
1010         and GFC_ISYM_MCLOCK8.
1011         * iresolve.c (gfc_resolve_int2, gfc_resolve_int8,
1012         gfc_resolve_long, gfc_resolve_lstat, gfc_resolve_mclock,
1013         gfc_resolve_mclock8, gfc_resolve_lstat_sub): New functions.
1014         * check.c (gfc_check_intconv): New function.
1015         * trans-intrinsic.c (gfc_conv_intrinsic_function): Add cases for
1016         the added GFC_ISYM_*.
1017         * simplify.c (gfc_simplify_intconv, gfc_simplify_int2,
1018         gfc_simplify_int8, gfc_simplify_long): New functions.
1019         * intrinsic.h (gfc_check_intconv, gfc_simplify_int2,
1020         gfc_simplify_int8, gfc_simplify_long, gfc_resolve_int2,
1021         gfc_resolve_int8, gfc_resolve_long, gfc_resolve_lstat,
1022         gfc_resolve_mclock, gfc_resolve_mclock8, gfc_resolve_lstat_sub):
1023         Add prototypes.
1024
1025 2006-07-24  Erik Edelmann  <eedelman@gcc.gnu.org>
1026
1027         PR fortran/28416
1028         * trans-array.c (gfc_conv_array_parameter): Give special treatment for
1029         ALLOCATABLEs if they are themselves dummy variables.
1030
1031 2006-07-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1032
1033         PR fortran/25289
1034         * gfortran.h: Declare gfc_large_io_int_kind.
1035         * trans-types.c (gfc_init_kinds): Set gfc_large_io_int_kind
1036         to size 8 or 4.
1037         * trans-io.c (enum iofield_type): Add large_io_int type.
1038         (gfc_build_st_parameter): Same.
1039         (gfc_build_io_library_fndecls): Same.
1040         * ioparm_def: Use large_io_int to define rec.
1041
1042 2006-07-22  Steven Bosscher  <steven@gcc.gnu.org> 
1043
1044         PR fortran/28439
1045         * trans-stmt.c (gfc_trans_arithmetic_if): Evaluate the condition once.
1046
1047 2006-07-16  Jakub Jelinek  <jakub@redhat.com>
1048
1049         PR fortran/28390
1050         * trans-openmp.c (gfc_trans_omp_do): Look for LASTPRIVATE in
1051         code->exp.omp_clauses rather than in the 3rd function argument.
1052
1053 2006-07-16  Paul Thomas  <pault@gcc.gnu.org>
1054
1055         PR fortran/28384
1056         * trans-common.c (translate_common): If common_segment is NULL
1057         emit error that common block does not exist.
1058
1059         PR fortran/20844
1060         * io.c (check_io_constraints): It is an error if an ADVANCE
1061         specifier appears without an explicit format.
1062
1063         PR fortran/28201
1064         * resolve.c (resolve_generic_s): For a use_associated function,
1065         do not search for an alternative symbol in the parent name
1066         space.
1067
1068         PR fortran/20893
1069         * resolve.c (resolve_elemental_actual): New function t combine
1070         all the checks of elemental procedure actual arguments. In
1071         addition, check of array valued optional args(this PR) has
1072         been added.
1073         (resolve_function, resolve_call): Remove parts that treated
1074         elemental procedure actual arguments and call the above.
1075
1076 2006-07-14  Steven G. Kargl  <kargls@comcast.net>
1077
1078         * trans-expr.c (gfc_trans_string_copy): Evaluate the string lengths
1079
1080 006-07-13  Paul Thomas  <pault@gcc.gnu.org>
1081
1082         PR fortran/28353
1083         * trans-expr.c (gfc_conv_aliased_arg): Missing formal arg means
1084         that intent is INOUT (fixes regression).
1085
1086         PR fortran/25097
1087         * check.c (check_present): The only permitted reference is a
1088         full array reference.
1089
1090         PR fortran/20903
1091         * decl.c (variable_decl): Add error if a derived type is not
1092         from the current namespace if the namespace is an interface
1093         body.
1094
1095 2006-07-12  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1096
1097         PR fortran/28163
1098         * trans-expr.c (gfc_trans_string_copy): Generate inline code
1099         to perform string copying instead of calling a library function.
1100         * trans-decl.c (gfc_build_intrinsic_function_decls): Don't build
1101         decl for copy_string.
1102         * trans.h (gfor_fndecl_copy_string): Remove prototype.
1103
1104 2006-07-11  Feng Wang  <fengwang@nudt.edu.cn>
1105
1106         PR fortran/28213
1107         * trans-io.c (transfer_expr): Deal with Hollerith constants used in
1108         I/O list.
1109
1110 2006-07-07  Kazu Hirata  <kazu@codesourcery.com>
1111
1112         * intrinsic.texi: Fix typos.
1113
1114 2006-07-07  Paul Thomas  <pault@gcc.gnu.org>
1115
1116         PR fortran/28237
1117         PR fortran/23420
1118         * io.c (resolve_tag): Any integer that is not an assigned
1119         variable is an error.
1120
1121 2006-07-06  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1122
1123         PR fortran/28129
1124         * trans-array.c (gfc_trans_array_bound_check): Add a locus
1125         argument, and use it in the error messages.
1126         (gfc_conv_array_index_offset): Donc perform bounds checking on
1127         the last dimension of assumed-size arrays.
1128
1129 2006-07-06  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1130
1131         PR fortran/27874
1132         * trans-stmt.c (compute_inner_temp_size): Don't perform bounds
1133         checking when calculating the bounds of scalarization.
1134
1135 2006-07-05  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1136
1137         PR fortran/20892
1138         * interface.c (gfc_match_interface): Don't allow dummy procedures
1139         to have a generic interface.
1140
1141 2006-07-04  Paul Thomas  <pault@gcc.gnu.org>
1142
1143         PR fortran/28174
1144         * trans-array.c (gfc_conv_expr_descriptor): When building temp,
1145         ensure that the substring reference uses a new charlen.
1146         * trans-expr.c (gfc_conv_aliased_arg): Add the formal intent to
1147         the argument list, lift the treatment of missing string lengths
1148         from the above and implement the use of the intent.
1149         (gfc_conv_function_call): Add the extra argument to the call to
1150         the above.
1151
1152         PR fortran/28167
1153         * trans-array.c (get_array_ctor_var_strlen): Treat a constant
1154         substring reference.
1155         * array.c (gfc_resolve_character_array_constructor): Remove 
1156         static attribute and add the gfc_ prefix, make use of element
1157         charlens for the expression and pick up constant string lengths
1158         for expressions that are not themselves constant.
1159         * gfortran.h : resolve_character_array_constructor prototype
1160         added.
1161         * resolve.c (gfc_resolve_expr): Call resolve_character_array_
1162         constructor again after expanding the constructor, to ensure
1163         that the character length is passed to the expression.
1164
1165 2006-07-04  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1166             Daniel Franke  <franke.daniel@gmail.com>
1167
1168         * intrinsic.c (add_subroutines): Add ITIME and IDATE.
1169         * intrinsic.h (gfc_check_itime_idate,gfc_resolve_idate,
1170         fc_resolve_itime): New protos.
1171         * iresolve.c (gfc_resolve_itime, gfc_resolve_idate): New functions.
1172         * check.c (gfc_check_itime_idate): New function.
1173         * intrinsic.texi: Document the new intrinsics.
1174
1175 2006-07-03  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1176
1177         * intrinsics/date_and_time.c (itime0,idate0,itime_i4,itime_i8,
1178         idate_i4,idate_i8): New functions.
1179
1180
1181 2006-07-03  Asher Langton  <langton2@llnl.gov>
1182
1183         * decl.c (match_old_style_init): Add data attribute to symbol.
1184
1185 2006-07-03  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1186
1187         * iresolve.c (gfc_resolve_cpu_time, gfc_resolve_random_number):
1188         Remove ATTRIBUTE_UNUSED for used argument.
1189
1190 2006-07-03  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1191
1192         * intrinsic.texi: Document new intrinsics.
1193
1194 2006-07-01  Tobias Schl\81üter  <tobias.schlueter@physik.uni-muenchen.de>
1195
1196         PR fortran/19259
1197         * parse.c (next_free): Error out on line starting with semicolon.
1198         (next_fixed): Fix formatting.  Error out on line starting with
1199         semicolon.
1200
1201 2006-06-30  Kazu Hirata  <kazu@codesourcery.com>
1202
1203         * check.c: Fix a comment typo.
1204
1205 2006-06-25  Paul Thomas  <pault@gcc.gnu.org>
1206
1207         PR fortran/25056
1208         * interface.c (compare_actual_formal): Signal an error if the formal
1209         argument is a pure procedure and the actual is not pure.
1210
1211         PR fortran/27554
1212         * resolve.c (resolve_actual_arglist): If the type of procedure
1213         passed as an actual argument is not already declared, see if it is
1214         an intrinsic.
1215
1216         PR fortran/25073
1217         * resolve.c (resolve_select): Use bits 1 and 2 of a new int to
1218         keep track of  the appearance of constant logical case expressions.
1219         Signal an error is either value appears more than once.
1220
1221         PR fortran/20874
1222         * resolve.c (resolve_fl_procedure): Signal an error if an elemental
1223         function is not scalar valued.
1224
1225         PR fortran/20867
1226         * match.c (recursive_stmt_fcn): Perform implicit typing of variables.
1227
1228         PR fortran/22038
1229         * match.c (match_forall_iterator): Mark new variables as
1230         FL_UNKNOWN if the match fails.
1231
1232         PR fortran/28119
1233         * match.c (gfc_match_forall): Remove extraneous call to
1234         gfc_match_eos.
1235
1236         PR fortran/25072
1237         * resolve.c (resolve_code, resolve_function): Rework
1238         forall_flag scheme so that it is set and has a value of
1239         2, when the code->expr (ie. the forall mask) is resolved.
1240         This is used to change "block" to "mask" in the non-PURE
1241         error message.
1242
1243 2006-06-24  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1244
1245         PR fortran/28081
1246         * resolve.c (resolve_substring): Don't issue out-of-bounds
1247         error messages when the range has zero size.
1248
1249 2006-06-24  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1250
1251         PR fortran/23862
1252         * lang-specs.h (f95-cpp-input): Pass -ffree-form to f951 unless
1253         -ffixed-form is explicitly specified.
1254
1255 2006-06-24  Paul Thomas  <pault@gcc.gnu.org>
1256
1257         PR fortran/28118
1258         * trans-array.c (gfc_conv_expr_descriptor): When building temp,
1259         use the substring reference to calculate the length if the
1260         expression does not have a charlen.
1261
1262 2006-06-24  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1263
1264         PR fortran/28094
1265         * trans-intrinsic.c (gfc_conv_intrinsic_mod): Support cases where
1266         there is no integer kind equal to the resulting real kind.
1267         * intrinsic.c (add_functions): MODULO is not allowed as an actual
1268         argument.
1269
1270 2006-06-23  Steven G. Kargl  <kargls@comcast.net>
1271
1272         PR fortran/27981
1273         * match.c (gfc_match_if):  Handle errors in assignment in simple if.
1274
1275 2006-06-22  Asher Langton  <langton2@llnl.gov>
1276
1277         PR fortran/24748
1278         * primary.c (gfc_match_rvalue): Don't call match_substring for
1279         implicit non-character types.
1280
1281 2006-06-22  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1282
1283         PR libfortran/26769
1284         * iresolve.c (gfc_resolve_reshape): Call reshape_r4 and
1285         reshape_r8 instead of reshape_4 and reshape_8.
1286         (gfc_resolve_transpose): Likewise for transpose.
1287
1288 2006-06-21  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1289
1290         * trans-expr.c (gfc_conv_missing_dummy, gfc_conv_unary_op,
1291         gfc_conv_cst_int_power, gfc_conv_string_tmp,
1292         gfc_conv_function_call): Replace calls to convert on constant
1293         integer nodes by build_int_cst.
1294         * trans-stmt.c (gfc_trans_do): Likewise.
1295         * trans-io.c (set_internal_unit, transfer_namelist_element):
1296         Likewise.
1297         * trans-decl.c (build_entry_thunks): Likewise.
1298
1299 2006-06-20  Steven G. Kargl  <kargls@comcast.net>
1300
1301         * simplify.c (gfc_simplify_rrspacing): Initialize and clear mpfr_t
1302         variable.
1303
1304 2006-06-20  Paul Thomas  <pault@gcc.gnu.org>
1305
1306         PR fortran/25049
1307         PR fortran/25050
1308         * check.c (non_init_transformational): New function.
1309         (find_substring_ref): New function to signal use of disallowed
1310         transformational intrinsic in an initialization expression.
1311         (gfc_check_all_any): Call previous if initialization expr.
1312         (gfc_check_count): The same.
1313         (gfc_check_cshift): The same.
1314         (gfc_check_dot_product): The same.
1315         (gfc_check_eoshift): The same.
1316         (gfc_check_minloc_maxloc): The same.
1317         (gfc_check_minval_maxval): The same.
1318         (gfc_check_gfc_check_product_sum): The same.
1319         (gfc_check_pack): The same.
1320         (gfc_check_spread): The same.
1321         (gfc_check_transpose): The same.
1322         (gfc_check_unpack): The same.
1323
1324         PR fortran/18769
1325         *intrinsic.c (add_functions): Add gfc_simplify_transfer.
1326         *intrinsic.h : Add prototype for gfc_simplify_transfer.
1327         *simplify.c (gfc_simplify_transfer) : New function to act as
1328         placeholder for eventual implementation.  Emit error for now.
1329
1330         PR fortran/16206
1331         * expr.c (find_array_element): Eliminate condition on length of
1332         offset. Add bounds checking. Rearrange exit. Return try and
1333         put gfc_constructor result as an argument.
1334         (find_array_section): New function.
1335         (find_substring_ref): New function.
1336         (simplify_const_ref): Add calls to previous.
1337         (simplify_parameter_variable): Return on NULL expr.
1338         (gfc_simplify_expr): Only call gfc_expand_constructor for full
1339         arrays.
1340
1341         PR fortran/20876
1342         * match.c (gfc_match_forall): Add missing locus to gfc_code.
1343
1344 2006-06-18  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1345
1346         PR fortran/26801
1347         * trans-intrinsic.c (gfc_conv_associated): Use pre and post blocks
1348         of the scalarization expression.
1349
1350 2006-06-18  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1351
1352         PR fortran/19310
1353         PR fortran/19904
1354         * arith.c (gfc_range_check): Return ARITH_OK if -fno-range-check. Add
1355         return of ARITH_NAN, ARITH_UNDERFLOW, and ARITH_OVERFLOW.
1356         (gfc_arith_divide): If -fno-range-check allow mpfr to divide by zero.
1357         * gfortran.h (gfc_option_t): Add new flag.
1358         * invoke.texi: Document new flag.
1359         * lang.opt: Add option -frange-check.
1360         * options.c (gfc_init_options): Initialize new flag.
1361         (gfc_handle_options): Set flag if invoked.
1362         * simplify.c (range_check): Add error messages for
1363         overflow, underflow, and other errors.
1364         * trans-const.c (gfc_conv_mpfr_to_tree): Build NaN and Inf from mpfr
1365         result.
1366
1367 2006-06-17  Karl Berry  <karl@gnu.org>
1368
1369         * gfortran.texi (@dircategory): Use "Software development"
1370         instead of "Programming", following the Free Software Directory.
1371
1372 2006-06-16  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1373
1374         PR fortran/27965
1375         * trans-array.c (gfc_conv_ss_startstride): Correct the runtime
1376         conditions for bounds-checking. Check for nonzero stride.
1377         Don't check the last dimension of assumed-size arrays. Fix the
1378         dimension displayed in the error message.
1379
1380 2006-06-15  Thomas Koenig <Thomas.Koenig@online.de>
1381
1382         * trans-array.h (gfc_trans_create_temp_array):  Add bool
1383         argument.
1384         * trans-arrray.c (gfc_trans_create_temp_array): Add extra
1385         argument "function" to show if we are translating a function.
1386         If we are translating a function, perform checks whether
1387         the size along any argument is negative.  In that case,
1388         allocate size 0.
1389         (gfc_trans_allocate_storage):  Add function argument (as
1390         false) to gfc_trans_create_temp_array call.
1391         * trans-expr.c (gfc_conv_function_call):  Add function
1392         argument (as true) to gfc_trans_create_temp_array call.
1393         * trans-stmt.c (gfc_conv_elemental_dependencies): Add
1394         function argument (as false) to gfc_trans_create_temp_array
1395         call.
1396         * trans-intrinsic.c:  Likewise.
1397
1398 2006-06-10  Paul Thomas  <pault@gcc.gnu.org>
1399
1400         PR fortran/24558
1401         PR fortran/20877
1402         PR fortran/25047
1403         * decl.c (get_proc_name): Add new argument to flag that a
1404         module function entry is being treated. If true, correct
1405         error condition, add symtree to module namespace and add
1406         a module procedure.
1407         (gfc_match_function_decl, gfc_match_entry,
1408         gfc_match_subroutine): Use the new argument in calls to
1409         get_proc_name.
1410         * resolve.c (resolve_entries): ENTRY symbol reference to
1411         to master entry namespace if a module function.
1412         * trans-decl.c (gfc_create_module_variable): Return if
1413         the symbol is an entry.
1414         * trans-exp.c (gfc_conv_variable): Check that parent_decl
1415         is not NULL.
1416
1417 2006-06-09  Jakub Jelinek  <jakub@redhat.com>
1418
1419         PR fortran/27916
1420         * trans-openmp.c (gfc_omp_clause_default_ctor): New function.
1421         * trans.h (gfc_omp_clause_default_ctor): New prototype.
1422         * f95-lang.c (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): Define.
1423
1424 2006-06-08  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1425
1426         PR fortran/27958
1427         * trans-expr.c (gfc_conv_substring): If the substring start is
1428         greater than its end, the length of the substring is zero, and
1429         not negative.
1430         (gfc_trans_string_copy): Don't generate a call to
1431         _gfortran_copy_string when destination length is zero.
1432
1433 2006-06-08  Asher Langton  <langton2@llnl.gov>
1434         
1435         PR fortran/27786
1436         * trans-array.c (gfc_conv_array_ref): Eliminate bounds checking
1437         for assumed-size Cray pointees.
1438
1439 2006-06-08  Steven G. Kargl  <kargls@comcat.net>
1440
1441         * intrinsic.c (add_subroutine):  Make make_noreturn() conditional on
1442         the appropriate symbol name.
1443         
1444 2006-06-07  Paul Thomas  <pault@gcc.gnu.org>
1445
1446         PR fortran/23091
1447         * resolve.c (resolve_fl_variable): Error if an automatic
1448         object has the SAVE attribute.
1449
1450         PR fortran/24168
1451         * expr.c (simplify_intrinsic_op): Transfer the rank and
1452         the locus to the simplified expression.
1453
1454         PR fortran/25090
1455         PR fortran/25058
1456         * gfortran.h : Add int entry_id to gfc_symbol.
1457         * resolve.c : Add static variables current_entry_id and
1458         specification_expr.
1459         (resolve_variable): During code resolution, check if a
1460         reference to a dummy variable in an executable expression
1461         is preceded by its appearance as a parameter in an entry.
1462         Likewise check its specification expressions.
1463         (resolve_code): Update current_entry_id on EXEC_ENTRY.
1464         (resolve_charlen, resolve_fl_variable): Set and reset
1465         specifiaction_expr.
1466         (is_non_constant_shape_array): Do not return on detection
1467         of a variable but continue to resolve all the expressions.
1468         (resolve_codes): set current_entry_id to an out of range
1469         value.
1470
1471 2006-06-06  Mike Stump  <mrs@apple.com>
1472
1473         * Make-lang.in: Rename to htmldir to build_htmldir to avoid
1474         installing during build.
1475
1476 2006-06-06  Paul Thomas  <pault@gcc.gnu.org>
1477
1478         PR fortran/27897
1479         * match.c (gfc_match_common):  Fix code typo.  Remove
1480         sym->name, since sym is NULL, and replace with name.
1481
1482 2006-06-05  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1483
1484         PR libfortran/27895
1485         * resolve.c (compute_last_value_for_triplet): New function.
1486         (check_dimension): Correctly handle zero-sized array sections.
1487         Add checking on last element of array sections.
1488
1489 2006-06-05  Steven G. Kargl  <kargls@comcast.net>
1490
1491         * data.c (gfc_assign_data_value):  Fix comment typo.  Remove
1492         a spurious return.
1493
1494 2006-06-05  Paul Thomas  <pault@gcc.gnu.org>
1495
1496         PR fortran/14067
1497         * data.c (create_character_intializer): Add warning message
1498         for truncated string.
1499
1500         PR fortran/16943
1501         * symbol.c : Include flags.h.
1502         (gfc_add_type): If a procedure and types are the same do not
1503         throw an error unless standard is less than gnu or pedantic.
1504
1505         PR fortran/20839
1506         * parse.c (parse_do_block): Error if named block do construct
1507         does not have a named enddo.
1508
1509         PR fortran/27655
1510         * check.c (gfc_check_associated): Pick up EXPR_NULL for pointer
1511         as well as target and put error return at end of function.
1512
1513 2006-06-03  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1514
1515         * trans.c (gfc_msg_bounds, gfc_msg_fault, gfc_msg_wrong_return):
1516         Add strings for common runtime error messages.
1517         (gfc_trans_runtime_check): Add a locus argument, use a string
1518         and not a string tree for the message.
1519         * trans.h (gfc_trans_runtime_check): Change prototype accordingly.
1520         (gfc_msg_bounds, gfc_msg_fault, gfc_msg_wrong_return): Add proto.
1521         * trans-const.c (gfc_strconst_bounds, gfc_strconst_fault,
1522         gfc_strconst_wrong_return, gfc_strconst_current_filename): Remove.
1523         (gfc_init_constants): Likewise.
1524         * trans-const.h: Likewise.
1525         * trans-decl.c (gfc_build_builtin_function_decls): Call to
1526         _gfortran_runtime_error has only one argument, the message string.
1527         * trans-array.h (gfc_conv_array_ref): Add a symbol argument and a
1528         locus.
1529         * trans-array.c (gfc_trans_array_bound_check): Build precise
1530         error messages.
1531         (gfc_conv_array_ref): Use the new symbol argument and the locus
1532         to build more precise error messages.
1533         (gfc_conv_ss_startstride): More precise error messages.
1534         * trans-expr.c (gfc_conv_variable): Give symbol reference and
1535         locus to gfc_conv_array_ref.
1536         (gfc_conv_function_call): Use the new prototype for
1537         gfc_trans_runtime_check.
1538         * trans-stmt.c (gfc_trans_goto): Build more precise error message.
1539         * trans-io.c (set_string): Likewise.
1540         * trans-intrinsic.c (gfc_conv_intrinsic_bound): Use new prototype
1541         for gfc_trans_runtime_check.
1542
1543 2006-06-01  Thomas Koenig  <Thomas.Koenig@online.de>
1544
1545         PR fortran/27715
1546         * arith.c:  Cast the characters from the strings to unsigned
1547         char to avoid values less than 0 for extended ASCII.
1548
1549 2006-06-01  Per Bothner  <bothner@bothner.com>
1550
1551         * data.c (gfc_assign_data_value): Handle USE_MAPPED_LOCATION.
1552         * scanner.c (gfc_gobble_whitespace): Likewise.
1553
1554 2006-06-01  Paul Thomas  <pault@gcc.gnu.org>
1555
1556         PR fortran/25098
1557         PR fortran/25147
1558         * interface.c (compare_parameter): Return 1 if the actual arg
1559         is external and the formal is a procedure.
1560         (compare_actual_formal): If the actual argument is a variable
1561         and the formal a procedure, this an error.  If a gsymbol exists
1562         for a procedure of the same name, this is not yet resolved and
1563         the error is cleared.
1564
1565         * trans-intrinsic.c (gfc_conv_associated): Make provision for
1566         zero array length or zero string length contingent on presence
1567         of target, for consistency with standard.
1568
1569 2006-05-30  Asher Langton  <langton2@llnl.gov>
1570
1571         * symbol.c (check_conflict): Allow external, function, and
1572         subroutine attributes with Cray pointees.
1573         * trans-expr.c (gfc_conv_function_val): Translate Cray pointees
1574         that point to procedures.
1575         * gfortran.texi: Document new feature.
1576
1577 2006-05-29  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1578
1579         PR fortran/27634
1580         * io.c (check_format): Add error for missing period in format
1581         specifier unless -std=legacy.
1582         * gfortran.texi: Add description of expanded namelist read and
1583         missing period in format extensions.
1584
1585 2006-05-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1586
1587         PR fortran/19777
1588         * trans-array.c (gfc_conv_array_ref): Perform out-of-bounds
1589         checking for assumed-size arrrays for all but the last dimension.
1590
1591 2006-05-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1592
1593         * invoke.texi: Change -fpackderived into -fpack-derived.
1594
1595 2006-05-29  Kazu Hirata  <kazu@codesourcery.com>
1596
1597         * options.c, primary.c, resolve.c, trans-common.c: Fix typos
1598         in error messages.
1599
1600 2006-05-28  Kazu Hirata  <kazu@codesourcery.com>
1601
1602         * check.c, expr.c, resolve.c, trans-common.c,
1603         trans-intrinsic.c, trans-stmt.c, trans-types.c: Fix comment typos.
1604
1605 2006-05-27  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1606
1607         PR fortran/19777
1608         * trans-array.c (gfc_conv_array_ref): Don't perform out-of-bounds
1609         checking for assumed-size arrrays.
1610
1611 2006-05-27  Paul Thomas  <pault@gcc.gnu.org>
1612
1613         * trans-intrinsic.c (gfc_conv_associated): If pointer in first
1614         arguments has zero array length of zero string length, return
1615         false.
1616
1617 2006-05-26  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1618
1619         PR fortran/27524
1620         * trans-array.c (gfc_trans_dummy_array_bias): Don't use stride as
1621         a temporary variable when -fbounds-check is enabled, since its
1622         value will be needed later.
1623
1624 2006-05-26  Thomas Koenig  <Thomas.Koenig@online.de>
1625
1626         PR fortran/23151
1627         * io.c (match_io):  print (1,*) is an error.
1628
1629 2006-05-26  Paul Thomas  <pault@gcc.gnu.org>
1630
1631         PR fortran/27709
1632         * resolve.c (find_array_spec): Add gfc_symbol, derived, and
1633         use to track repeated component references.
1634
1635         PR fortran/27155
1636         PR fortran/27449
1637         * trans-intrinsic.c (gfc_conv_intrinsic_array_transfer): Use
1638         se->string_length throughout and use memcpy to populate the
1639         expression returned to the scalarizer.
1640         (gfc_size_in_bytes): New function.
1641
1642 2006-05-21  Paul Thomas  <pault@gcc.gnu.org>
1643
1644         PR fortran/27613
1645         * primary.c (gfc_match_rvalue): Test if symbol represents a
1646         direct recursive function reference.  Error if array valued,
1647         go to function0 otherwise.
1648
1649 2006-05-21  Paul Thomas  <pault@gcc.gnu.org>
1650
1651         PR fortran/25746
1652         * interface.c (gfc_extend_assign): Use new EXEC_ASSIGN_CALL.
1653         * gfortran.h : Put EXEC_ASSIGN_CALL in enum.
1654         * trans-stmt.c (gfc_conv_elemental_dependencies): New function.
1655         (gfc_trans_call): Call it.  Add new boolian argument to flag
1656         need for dependency checking. Assert intent OUT and IN for arg1
1657         and arg2.
1658         (gfc_trans_forall_1): Use new code EXEC_ASSIGN_CALL.
1659         trans-stmt.h : Modify prototype of gfc_trans_call.
1660         trans.c (gfc_trans_code): Add call for EXEC_ASSIGN_CALL.
1661         st.c (gfc_free_statement): Free actual for EXEC_ASSIGN_CALL.
1662         * dependency.c (gfc_check_fncall_dependency): Don't check other
1663         against itself.
1664
1665         PR fortran/25090
1666         * resolve.c : Remove resolving_index_expr.
1667         (entry_parameter): Remove.
1668         (gfc_resolve_expr, resolve_charlen, resolve_fl_variable): Lift
1669         calls to entry_parameter and references to resolving_index_expr.
1670
1671         PR fortran/27584
1672         * check.c (gfc_check_associated): Replace NULL assert with an
1673         error message, since it is possible to generate bad code that
1674         has us fall through to here..
1675
1676         PR fortran/19015
1677         * iresolve.c (maxloc, minloc): If DIM is not present, pass the
1678         rank of ARRAY as the shape of the result.  Otherwise, pass the
1679         shape of ARRAY, less the dimension DIM.
1680         (maxval, minval): The same, when DIM is present, otherwise no
1681         change.
1682
1683 2006-05-19  H.J. Lu  <hongjiu.lu@intel.com>
1684
1685         PR fortran/27662
1686         * trans-array.c (gfc_conv_expr_descriptor): Don't zero the
1687         first stride to indicate a temporary.
1688         * trans-expr.c (gfc_conv_function_call): Likewise.
1689
1690 2006-05-18  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1691             Feng Wang  <fengwang@nudt.edu.cn>
1692
1693         PR fortran/27552
1694         * dump-parse-tree.c (gfc_show_expr): Deal with Hollerith constants.
1695         * data.c (create_character_intializer): Set from_H flag if character is
1696         initialized by Hollerith constant.
1697
1698 2006-05-17  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1699
1700         PR fortran/26551
1701         * resolve.c (resolve_call, resolve_function): Issue an error
1702         if a function or subroutine call is recursive but the function or
1703         subroutine wasn't declared as such.
1704
1705 2006-05-07  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1706
1707         PR fortran/26551
1708         * gfortran.dg/recursive_check_1.f: New test.
1709
1710
1711 2006-05-17  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1712
1713         PR fortran/27320
1714         * dump-parse-tree.c (gfc_show_code_node): Try harder to find the
1715         called procedure name.
1716
1717 2006-05-17  Jakub Jelinek  <jakub@redhat.com>
1718
1719         PR middle-end/27415
1720         * trans-openmp.c (gfc_trans_omp_parallel_do,
1721         gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare): Set
1722         OMP_PARALLEL_COMBINED flag.
1723
1724 2006-05-16  H.J. Lu  <hongjiu.lu@intel.com>
1725
1726         PR driver/26885
1727         * Make-lang.in (GFORTRAN_D_OBJS): Replace gcc.o with
1728         $(GCC_OBJS).
1729
1730 2006-05-15  Paul Thomas  <pault@gcc.gnu.org>
1731
1732         PR fortran/25090
1733         * resolve.c: Static resolving_index_expr initialized.
1734         (entry_parameter): New function to emit errors for variables
1735         that are not entry parameters.
1736         (gfc_resolve_expr): Call entry_parameter, when resolving
1737         variables, if the namespace has entries and resolving_index_expr
1738         is set.
1739         (resolve_charlen): Set resolving_index_expr before the call to
1740         resolve_index_expr and reset it afterwards.
1741         (resolve_fl_variable): The same before and after the call to
1742         is_non_constant_shape_array, which ultimately makes a call to
1743         gfc_resolve_expr.
1744
1745         PR fortran/25082
1746         * resolve.c (resolve_code): Add error condition that the return
1747         expression must be scalar.
1748
1749         PR fortran/27411
1750         * matchexp.c (gfc_get_parentheses): New function.
1751         (match_primary): Remove inline code and call above.
1752         * gfortran.h: Provide prototype for gfc_get_parentheses.
1753         * resolve.c (resolve_array_ref): Call the above, when start is a
1754         derived type variable array reference.
1755
1756 2006-05-15  Jakub Jelinek  <jakub@redhat.com>
1757
1758         PR fortran/27446
1759         * trans-openmp.c (gfc_trans_omp_array_reduction): Ensure
1760         OMP_CLAUSE_REDUCTION_{INIT,MERGE} are set to BIND_EXPR.
1761
1762 2006-05-14  H.J. Lu  <hongjiu.lu@intel.com>
1763
1764         * Make-lang.in (fortran/options.o): Depend on $(TARGET_H).
1765
1766 2006-05-11  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1767
1768         PR fortran/27553
1769         * parse.c (next_free): Return instead of calling decode_statement
1770         upon error.
1771
1772 2005-05-10  Thomas Koenig  <Thomas.Koenig@online.de>
1773
1774         PR fortran/27470
1775         * trans-array.c(gfc_array_allocate):  If ref->next exists
1776         that is if there is a statement like ALLOCATE(foo%bar(2)),
1777         F95 rules require that bar should be a pointer.
1778
1779 2006-05-10  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1780
1781         PR fortran/20460
1782         * resolve.c (gfc_resolve_index): Make REAL array indices a
1783         GFC_STD_LEGACY feature.
1784
1785 2006-05-10  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1786
1787         PR fortran/24549
1788         * parse.c (reject_statement): Clear gfc_new_block.
1789
1790 2006-05-09  Steven G. Kargl  <kargls@comcast.net>
1791
1792         * invoke.texi: Missed file in previous commit.  Update
1793          description of -fall-intrinsics
1794
1795 2006-05-07  Steven Boscher  <steven@gcc.gnu.org>
1796
1797         PR fortran/27378
1798         * parse.c (next_statement): Add check to avoid an ICE when
1799         gfc_current_locus.lb is not set.
1800
1801 2006-05-07  Tobias Schl\81üter  <tobias.schlueter@physik.uni-muenchen.de>
1802
1803         PR fortran/27457
1804         * match.c (match_case_eos): Error out on garbage following
1805         CASE(...).
1806
1807 2006-05-07  Paul Thomas  <pault@gcc.gnu.org>
1808
1809         PR fortran/24813
1810         * trans-array.c (get_array_ctor_strlen): Remove static attribute.
1811         * trans.h: Add prototype for get_array_ctor_strlen.
1812         * trans-intrinsic.c (gfc_conv_intrinsic_len): Switch on EXPR_ARRAY
1813         and call get_array_ctor_strlen.
1814
1815 2006-05-05  Steven G. Kargl  <kargls@comcast.net>
1816
1817         * invoke.texi: Update description of -fall-intrinsics
1818         * options.c (gfc_post_options): Disable -Wnonstd-intrinsics if
1819         -fall-intrinsics is used.
1820         (gfc_handle_option): Permit -Wno-nonstd-intrinsics.
1821
1822 2006-05-04  Tobias Schl\81üter  <tobias.schlueter@physik.uni-muenchen.de>
1823
1824         * simplify.c (ascii_table): Fix wrong entry.
1825
1826 2006-05-02  Steven G. Kargl  <kargls@comcast.net>
1827
1828         PR fortran/26896
1829         * lang.opt: Fix -Wtab description
1830
1831         PR fortran/20248  
1832         * lang.opt: New flag -fall-intrinsics.
1833         * invoke.texi:  Document option.
1834         * gfortran.h (options_t):  New member flag_all_intrinsics.
1835         * options.c (gfc_init_options, gfc_handle_option): Set new option.
1836         sort nearby misplaced options.
1837         * intrinsic.c (add_sym, make_generic, make_alias):  Use it.
1838
1839 2006-05-02 Paul Thomas <pault@gcc.gnu.org>
1840
1841         PR fortran/27269
1842         * module.c: Add static flag in_load_equiv.
1843         (mio_expr_ref): Return if no symtree and in_load_equiv.
1844         (load_equiv): If any of the equivalence members have no symtree, free
1845         the equivalence and the associated expressions.
1846
1847         PR fortran/27324
1848         * trans-common.c (gfc_trans_common): Invert the order of calls to
1849         finish equivalences and gfc_commit_symbols.
1850
1851 2006-04-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1852
1853         PR fortran/25681
1854         * simplify.c (simplify_len): Character variables with constant
1855         length can be simplified.
1856
1857 2006-04-29  H.J. Lu  <hongjiu.lu@intel.com>
1858
1859         PR fortran/27351
1860         * trans-array.c (gfc_conv_array_transpose): Move gcc_assert
1861         before gfc_conv_expr_descriptor.
1862
1863 2006-04-23  Paul Thomas  <pault@gcc.gnu.org>
1864
1865         PR fortran/25099
1866         * resolve.c (resolve_call): Check conformity of elemental
1867         subroutine actual arguments.
1868
1869 2006-04-22  Jakub Jelinek  <jakub@redhat.com>
1870
1871         PR fortran/26769
1872         * iresolve.c (gfc_resolve_reshape): Use reshape_r16 for real(16).
1873         (gfc_resolve_transpose): Use transpose_r16 for real(16).
1874
1875 2006-04-21 Paul Thomas <pault@gcc.gnu.org>
1876
1877         PR fortran/27122
1878         * resolve.c (resolve_function): Remove general restriction on auto
1879         character length function interfaces.
1880         (gfc_resolve_uops): Check restrictions on defined operator
1881         procedures.
1882         (resolve_types): Call the check for defined operators.
1883
1884         PR fortran/27113
1885         * trans-array.c (gfc_trans_array_constructor_subarray): Remove
1886         redundant gfc_todo_error.
1887         (get_array_ctor_var_strlen): Remove typo in enum.
1888
1889 2006-04-18  Bernhard Fischer  <aldot@gcc.gnu.org>
1890
1891         * parse.c (next_free): Use consistent error string between
1892         free-form and fixed-form for illegal statement label of zero.
1893         (next_fixed): Use consistent warning string between free-form
1894         and fixed-form for statement labels for empty statements.
1895
1896 2006-04-18  Steve Ellcey  <sje@cup.hp.com>
1897
1898         * trans-io.c (gfc_build_io_library_fndecls): Align pad.
1899
1900 2006-04-16  Thomas Koenig  <Thomas.Koenig@online.de>
1901
1902         PR fortran/26017
1903         * trans-array.c(gfc_array_init_size):  Introduce or_expr
1904         which is true if the size along any dimension
1905         is negative.  Create a temporary variable with base
1906         name size.  If or_expr is true, set the temporary to 0,
1907         to the normal size otherwise.
1908
1909 2006-04-16  Paul Thomas  <pault@gcc.gnu.org>
1910
1911         PR fortran/26822
1912         * intrinsic.c (add_functions): Mark LOGICAL as elemental.
1913
1914         PR fortran/26787
1915         * expr.c (gfc_check_assign): Extend scope of error to include
1916         assignments to a procedure in the main program or, from a
1917         module or internal procedure that is not that represented by
1918         the lhs symbol. Use VARIABLE rather than l-value in message.
1919
1920         PR fortran/27096
1921         * trans-array.c (gfc_trans_deferred_array): If the backend_decl
1922         is not a descriptor, dereference and then test and use the type.
1923
1924         PR fortran/25597
1925         * trans-decl.c (gfc_trans_deferred_vars): Check if an array
1926         result, is also automatic character length.  If so, process
1927         the character length.
1928
1929         PR fortran/18003
1930         PR fortran/25669
1931         PR fortran/26834
1932         * trans_intrinsic.c (gfc_walk_intrinsic_bound): Set
1933         data.info.dimen for bound intrinsics.
1934         * trans_array.c (gfc_conv_ss_startstride): Pick out LBOUND and
1935         UBOUND intrinsics and supply their shape information to the ss
1936         and the loop.
1937
1938         PR fortran/27124
1939         * trans_expr.c (gfc_trans_function_call):  Add a new block, post,
1940         in to which all the argument post blocks are put.  Add this block
1941         to se->pre after a byref call or to se->post, otherwise.
1942
1943 2006-04-14  Roger Sayle  <roger@eyesopen.com>
1944
1945         * trans-io.c (set_string): Use fold_build2 and build_int_cst instead
1946         of build2 and convert to construct "x < 0" rather than "x <= -1".
1947
1948 2006-04-13  Richard Henderson  <rth@redhat.com>
1949
1950         * trans-openmp.c (gfc_trans_omp_sections): Adjust for changed
1951         number of operands to OMP_SECTIONS.
1952
1953 2006-04-08  Kazu Hirata  <kazu@codesourcery.com>
1954
1955         * gfortran.texi: Fix typos.  Follow spelling conventions.
1956         * resolve.c, trans-expr.c, trans-stmt.c: Fix comment typos.
1957         Follow spelling conventions.
1958
1959 2006-04-05  Roger Sayle  <roger@eyesopen.com>
1960
1961         * dependency.c (get_no_elements): Delete function.
1962         (get_deps): Delete function.
1963         (transform_sections): Delete function.
1964         (gfc_check_section_vs_section): Significant rewrite.
1965
1966 2006-04-04  H.J. Lu  <hongjiu.lu@intel.com>
1967
1968         PR fortran/25619
1969         * trans-array.c (gfc_conv_expr_descriptor): Only dereference
1970         character pointer when copying temporary.
1971
1972         PR fortran/23634
1973         * trans-array.c (gfc_conv_expr_descriptor): Properly copy
1974         temporary character with non constant size.
1975
1976 2006-04-03  Paul Thomas  <pault@gcc.gnu.org>
1977
1978         PR fortran/26891
1979         * trans.h: Prototype for gfc_conv_missing_dummy.
1980         * trans-expr (gfc_conv_missing_dummy): New function
1981         (gfc_conv_function_call): Call it and tidy up some of the code.
1982         * trans-intrinsic (gfc_conv_intrinsic_function_args): The same.
1983
1984         PR fortran/26976
1985         * array.c (gfc_array_dimen_size): If available, return shape[dimen].
1986         * resolve.c (resolve_function): If available, use the argument
1987         shape for the function expression.
1988         * iresolve.c (gfc_resolve_transfer): Set shape[0] = size.
1989
1990 2006-04-02  Erik Edelmann  <eedelman@gcc.gnu.org>
1991
1992         * trans-array.c (gfc_trans_dealloc_allocated): Take a
1993         tree representation of the array to be deallocated as argument
1994         instead of its gfc_symbol.
1995         (gfc_trans_deferred_array): Update call to
1996         gfc_trans_dealloc_allocated.
1997         * trans-array.h (gfc_trans_dealloc_allocated): Update
1998         prototype.
1999         * trans-expr.c (gfc_conv_function_call): Update call to
2000         gfc_trans_dealloc_allocated, get indirect reference to dummy
2001         arguments.
2002
2003 2006-04-01  Roger Sayle  <roger@eyesopen.com>
2004
2005         PR fortran/25270
2006         * trans-array.c (gfc_trans_allocate_array_storage): In array index
2007         calculations use gfc_index_zero_node and gfc_index_one_node instead
2008         of integer_zero_node and integer_one_node respectively.
2009         (gfc_conv_array_transpose): Likewise.
2010         (gfc_conv_ss_startstride): Likewise.
2011         (gfc_trans_dummy_array_bias): Likewise.
2012
2013 2006-04-01  Roger Sayle  <roger@eyesopen.com>
2014
2015         * dependency.c (gfc_is_inside_range): Delete.
2016         (gfc_check_element_vs_section): Significant rewrite.
2017
2018 2006-04-01  Roger Sayle  <roger@eyesopen.com>
2019
2020         * dependency.c (gfc_dep_compare_expr): Strip parentheses and unary
2021         plus operators when comparing expressions.  Handle comparisons of
2022         the form "X+C vs. X", "X vs. X+C", "X-C vs. X" and "X vs. X-C" where
2023         C is an integer constant.  Handle comparisons of the form "P+Q vs.
2024         R+S" and "P-Q vs. R-S".  Handle comparisons of integral extensions
2025         specially (increasing functions) so extend(A) > extend(B), when A>B.
2026         (gfc_check_element_vs_element): Move test later, so that we ignore
2027         the fact that "A < B" or "A > B" when A or B contains a forall index.
2028
2029 2006-03-31  Asher Langton  <langton2@llnl.gov>
2030
2031         PR fortran/25358
2032         * expr.c (gfc_check_assign): Allow cray pointee to be assumes-size.
2033         
2034 2006-03-30  Paul Thomas <paulthomas2@wanadoo.fr>
2035             Bud Davis  <bdavis9659@sbcglobal.net>
2036
2037         PR 21130
2038         * module.c (load_needed): Traverse entire tree before returning.
2039
2040 2006-03-30  Roger Sayle  <roger@eyesopen.com>
2041
2042         PR middle-end/22375
2043         * trans.c (gfc_trans_runtime_check): Promote the arguments of
2044         __builtin_expect to the correct types, and the result back to
2045         boolean_type_node.
2046
2047 2006-03-29  Carlos O'Donell  <carlos@codesourcery.com>
2048
2049         * Make-lang.in: Rename docdir to gcc_docdir.
2050
2051 2006-03-28  Steven G. Kargl  <kargls@comcast.net>
2052
2053         * intrinsic.texi: s/floor/float in previous commit.
2054
2055 2006-03-28 Paul Thomas <pault@gcc.gnu.org>
2056
2057         PR fortran/26779
2058         * resolve.c (resolve_fl_procedure): Do not check the access of
2059         derived types for internal procedures.
2060
2061 2006-03-27  Jakub Jelinek  <jakub@redhat.com>
2062
2063         * io.c (check_io_constraints): Don't look at
2064         dt->advance->value.charater.string, unless it is a CHARACTER
2065         constant.
2066
2067         * f95-lang.c (gfc_get_alias_set): New function.
2068         (LANG_HOOKS_GET_ALIAS_SET): Define.
2069
2070 2006-03-25  Steven G. Kargl  <kargls@comcast.net>
2071
2072         PR fortran/26816
2073         * intrinsic.c (add_functions): Allow FLOAT to accept all integer kinds.
2074         * intrinsic.texi: Document FLOAT.
2075
2076 2006-03-25  Thomas Koenig  <Thomas.Koenig@online.de>
2077
2078         PR fortran/26769
2079         * iresolve.c (gfc_resolve_reshape):  Remove doubling of
2080         kind for complex. For real(kind=10), call reshape_r10.
2081         (gfc_resolve_transpose):  For real(kind=10), call
2082         transpose_r10.
2083
2084 2006-03-25  Roger Sayle  <roger@eyesopen.com>
2085
2086         * dependency.c (gfc_check_dependency): Improve handling of pointers;
2087         Two variables of different types can't have a dependency, and two
2088         variables with the same symbol are equal, even if pointers.
2089
2090 2006-03-24  Roger Sayle  <roger@eyesopen.com>
2091
2092         * gfortran.h (gfc_symbol): Add a new "forall_index" bit field.
2093         * match.c (match_forall_iterator): Set forall_index field on
2094         the iteration variable's symbol.
2095         * dependency.c (contains_forall_index_p): New function to
2096         traverse a gfc_expr to check whether it contains a variable
2097         with forall_index set in it's symbol.
2098         (gfc_check_element_vs_element): Return GFC_DEP_EQUAL for scalar
2099         constant expressions that don't variables used as FORALL indices.
2100
2101 2006-03-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2102
2103         PR driver/22600
2104         * error.c (gfc_fatal_error): Return ICE_EXIT_CODE instead of 4.
2105
2106 2006-03-22  Thomas Koenig  <Thomas.Koenig@online.de>
2107
2108         PR fortran/19303
2109         * gfortran.h (gfc_option_t):  Add record_marker.
2110         * lang.opt:  Add -frecord-marker=4 and -frecord-marker=8.
2111         * trans-decl.c:  Add gfor_fndecl_set_record_marker.
2112         (gfc_build_builtin_function_decls): Set
2113         gfor_fndecl_set_record_marker.
2114         (gfc_generate_function_code):  If we are in the main program
2115         and -frecord-marker was provided, call set_record_marker.
2116         * options.c (gfc_handle_option):  Add handling for
2117         -frecord-marker=4 and -frecord-marker=8.
2118         * invoke.texi:  Document -frecord-marker.
2119
2120 2006-03-22  Paul Thomas  <pault@gcc.gnu.org>
2121
2122         PR fortran/17298
2123         * trans-intrinsic.c (gfc_conv_intrinsic_array_transfer): New
2124         function to implement array valued TRANSFER intrinsic.
2125         (gfc_conv_intrinsic_function): Call the new function if TRANSFER
2126         and non-null se->ss.
2127         (gfc_walk_intrinsic_function): Treat TRANSFER as one of the
2128         special cases by calling gfc_walk_intrinsic_libfunc directly.
2129
2130 2006-03-21  Toon Moene  <toon@moene.indiv.nluug.nl>
2131
2132         * options.c (gfc_init_options): Initialize
2133         flag_argument_noalias to 3.
2134
2135 2006-03-20  Thomas Koenig  <Thomas.Koenig@online.de>
2136
2137         PR fortran/20935
2138         * iresolve.c (gfc_resolve_maxloc):   If mask is scalar,
2139         prefix the function name with an "s".  If the mask is scalar
2140         or if its kind is smaller than gfc_default_logical_kind,
2141         coerce it to default kind.
2142         (gfc_resolve_maxval):  Likewise.
2143         (gfc_resolve_minloc):  Likewise.
2144         (gfc_resolve_minval):  Likewise.
2145         (gfc_resolve_product):  Likewise.
2146         (gfc_resolve_sum):  Likewise.
2147
2148 2006-03-19  Paul Thomas  <pault@gcc.gnu.org>
2149
2150         PR fortran/26741
2151         *expr.c (external_spec_function): Permit elemental functions.
2152
2153         PR fortran/26716
2154         *interface.c (compare_actual_formal): Detect call for procedure
2155         usage and require rank checking, in this case, for assumed shape
2156         and deferred shape arrays.
2157         (gfc_procedure_use): Revert to pre-PR25070 call to
2158         compare_actual_formal that does not require rank checking..
2159
2160 2006-03-16  Roger Sayle  <roger@eyesopen.com>
2161
2162         * gfortran.h (gfc_equiv_info): Add length field.
2163         * trans-common.c (copy_equiv_list_to_ns): Set the length field.
2164         * dependency.c (gfc_are_equivalenced_arrays): Use both the offset
2165         and length fields to determine whether the two equivalenced symbols
2166         overlap in memory.
2167
2168 2006-03-14  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
2169
2170         PR fortran/19101
2171         * gfortran.h: Add warn_ampersand.
2172         * invoke.texi: Add documentation for new option.
2173         * lang.opt: Add Wampersand.
2174         * options.c (gfc_init_options): Initialize warn_ampersand.
2175         (gfc_post_options): Set the warn if pedantic.
2176         (set_Wall): Set warn_ampersand.
2177         (gfc_handle_option: Add Wampersand for itself, -std=f95, and -std=f2003.
2178         * scanner.c (gfc_next_char_literal): Add test for missing '&' in
2179         continued character constant and give warning if missing.
2180
2181 2006-03-14  Steven G. Kargl  <kargls@comcast.net>
2182
2183         PR 18537
2184         * gfortran.h: Wrap Copyright line.
2185         (gfc_option_t): add warn_tabs member.
2186         * lang.opt: Update Coyright year.  Add the Wtabs.
2187         * invoke.texi: Document -Wtabs.
2188         * scanner.c (gfc_gobble_whitespace): Use warn_tabs.  Add linenum to
2189         suppress multiple warnings.
2190         (load_line): Use warn_tabs.  Add linenum, current_line, seen_comment
2191         to suppress multiple warnings.
2192         * options.c (gfc_init_options): Initialize warn_tabs.
2193         (set_Wall): set warn_tabs for -Wall.
2194         (gfc_post_options): Adjust flag_tabs depending on -pedantic.
2195         (gfc_handle_option):  Process command-line option -W[no-]tabs
2196
2197 2006-03-13  Paul Thomas  <pault@gcc.gnu.org>
2198
2199         PR fortran/25378
2200         * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): Set the initial position to zero and
2201         modify the condition for updating it, to implement the F2003 requirement for all(mask)
2202         is false.
2203
2204 2006-03-13  Jakub Jelinek  <jakub@redhat.com>
2205
2206         * trans-openmp.c (gfc_trans_omp_variable): Handle references
2207         to parent result.
2208         * trans-expr.c (gfc_conv_variable): Remove useless setting
2209         of parent_flag, formatting.
2210
2211         * trans-decl.c (gfc_get_fake_result_decl): Re-add setting of
2212         GFC_DECL_RESULT flag.
2213
2214 2003-03-11  Roger Sayle  <roger@eyesopen.com>
2215
2216         * dependency.c (gfc_dep_compare_expr) <EXPR_OP>: Allow unary and
2217         binary operators to compare equal if their operands are equal.
2218         <EXPR_FUNCTION>: Allow "constant" intrinsic conversion functions
2219         to compare equal, if their operands are equal.
2220
2221 2006-03-11  Erik Edelmann  <eedelman@gcc.gnu.org>
2222
2223         * symbol.c (check_conflict): Allow allocatable function results,
2224         except for elemental functions.
2225         * trans-array.c (gfc_trans_allocate_temp_array): Rename to ...
2226         (gfc_trans_create_temp_array): ... this, and add new argument
2227         callee_alloc.
2228         (gfc_trans_array_constructor, gfc_conv_loop_setup): Update call
2229         to gfc_trans_allocate_temp_array.
2230         * trans-array.h (gfc_trans_allocate_temp_array): Update prototype.
2231         * trans-expr.c (gfc_conv_function_call): Use new arg of
2232         gfc_trans_create_temp_array avoid pre-allocation of temporary
2233         result variables of pointer AND allocatable functions.
2234         (gfc_trans_arrayfunc_assign): Return NULL for allocatable
2235         functions.
2236         * resolve.c (resolve_symbol): Copy value of 'allocatable' attribute
2237         from sym->result to sym.
2238
2239 2006-03-09  Erik Edelmann  <eedelman@gcc.gnu.org>
2240
2241         * trans-expr.c (gfc_add_interface_mapping): Copy 'allocatable'
2242         attribute from sym to new_sym.  Call build_fold_indirect_ref()
2243         for allocatable arguments.
2244
2245 2006-03-09 Paul Thomas <pault@gcc.gnu.org>
2246
2247         PR fortran/26257
2248         * trans-array.c (gfc_conv_expr_descriptor): Exclude calculation of
2249         the offset and data when se->data_not_needed is set.
2250         * trans.h: Include the data_not_need bit in gfc_se.
2251         * trans-intrinsic.c (gfc_conv_intrinsic_size): Set it for SIZE.
2252
2253 2006-03-06  Paul Thomas  <pault@gcc.gnu.org>
2254             Erik Edelmann  <eedelman@gcc.gnu.org>
2255
2256         * trans-array.c (gfc_trans_dealloc_allocated): New function.
2257         (gfc_trans_deferred_array): Use it, instead of inline code.
2258         * trans-array.h: Prototype for gfc_trans_dealloc_allocated().
2259         * trans-expr.c (gfc_conv_function_call): Deallocate allocated
2260         ALLOCATABLE, INTENT(OUT) arguments upon procedure entry.
2261
2262 2006-03-06  Paul Thomas  <pault@gcc.gnu.org>
2263
2264         PR fortran/26107
2265         * resolve.c (resolve_function): Add name after test for pureness.
2266
2267         PR fortran/19546
2268         * trans-expr.c (gfc_conv_variable): Detect reference to parent result,
2269         store current_function_decl, replace with parent, whilst calls are
2270         made to gfc_get_fake_result_decl, and restore afterwards. Signal this
2271         to gfc_get_fake_result_decl with a new argument, parent_flag.
2272         * trans-stmt.c (gfc_trans_return): gfc_get_fake_result_decl 2nd arg
2273         is set to zero.
2274         * trans.h: Add parent_flag to gfc_get_fake_result_decl prototype.
2275         * trans-decl.c (gfc_get_fake_result_decl): On parent_flag, being set,
2276         add decl to parent function. Replace refs to current_fake_result_decl
2277         with refs to this_result_decl.
2278         (gfc_generate_function_code): Null parent_fake_result_decl before the
2279         translation of code for contained procedures. Set parent_flag to zero
2280         in call to gfc_get_fake_result_decl.
2281         * trans-intrinsic.c (gfc_conv_intrinsic_len): The same.
2282
2283 2006-03-05  Steven G. Kargl  <kargls@comcast.net>
2284
2285         * simplify.c (gfc_simplify_verify):  Fix return when SET=''.
2286
2287 2006-03-05  Erik Edelmann  <eedelman@gcc.gnu.org>
2288
2289         PR fortran/16136
2290         * symbol.c (conf_std): New macro.
2291         (check_conflict): Use it to allow ALLOCATABLE dummy
2292         arguments for F2003.
2293         * trans-expr.c (gfc_conv_function_call): Pass the
2294         address of the array descriptor when dummy argument is
2295         ALLOCATABLE.
2296         * interface.c (compare_allocatable): New function.
2297         (compare_actual_formal): Use it.
2298         * resolve.c (resolve_deallocate_expr,
2299         resolve_allocate_expr): Check that INTENT(IN) variables
2300         aren't (de)allocated.
2301         * gfortran.texi (Fortran 2003 status): List ALLOCATABLE
2302         dummy arguments as supported.
2303
2304 2006-03-03  Roger Sayle  <roger@eyesopen.com>
2305
2306         * dependency.c (gfc_check_element_vs_element): Revert last change.
2307
2308 2006-03-03  Roger Sayle  <roger@eyesopen.com>
2309
2310         * dependency.c (gfc_check_element_vs_element): Consider two
2311         unordered scalar subscripts as (potentially) equal.
2312
2313 2006-03-03  Roger Sayle  <roger@eyesopen.com>
2314
2315         * dependency.c (gfc_check_dependency): Call gfc_dep_resolver to
2316         check whether two array references have a dependency.
2317         (gfc_check_element_vs_element): Assume lref and rref must be
2318         REF_ARRAYs.  If gfc_dep_compare_expr returns -2, assume these
2319         references could potentially overlap.
2320         (gfc_dep_resolver): Whitespace and comment tweaks.  Assume a
2321         dependency if the references have different depths.  Rewrite
2322         final term to clarrify we only have a dependency for overlaps.
2323
2324 2006-03-03  Thomas Koenig  <Thomas.Koenig@online.de>
2325
2326         PR fortran/25031
2327         * trans-array.h:  Adjust gfc_array_allocate prototype.
2328         * trans-array.c (gfc_array_allocate):  Change type of
2329         gfc_array_allocatate to bool.  Function returns true if
2330         it operates on an array.  Change second argument to gfc_expr.
2331         Find last reference in chain.
2332         If the function operates on an allocatable array, emit call to
2333         allocate_array() or allocate64_array().
2334         * trans-stmt.c (gfc_trans_allocate):  Code to follow to last
2335         reference has been moved to gfc_array_allocate.
2336         * trans.h:  Add declaration for gfor_fndecl_allocate_array and
2337         gfor_fndecl_allocate64_array.
2338         (gfc_build_builtin_function_decls):  Add gfor_fndecl_allocate_array
2339         and gfor_fndecl_allocate64_array.
2340
2341 2006-03-01  Roger Sayle  <roger@eyesopen.com>
2342
2343         * trans-stmt.c (generate_loop_for_temp_to_lhs): Add an additional
2344         INVERT argument to invert the sense of the WHEREMASK argument.
2345         Remove unneeded code to AND together a list of masks.
2346         (generate_loop_for_rhs_to_temp): Likewise.
2347         (gfc_trans_assign_need_temp): Likewise.
2348         (gfc_trans_forall_1): Likewise.
2349         (gfc_evaluate_where_mask): Likewise, add a new INVERT argument
2350         to specify the sense of the MASK argument.
2351         (gfc_trans_where_assign): Likewise.
2352         (gfc_trans_where_2): Likewise.  Restructure code that decides
2353         whether we need to allocate zero, one or two temporary masks.
2354         If this is a top-level WHERE (i.e. the incoming MASK is NULL),
2355         we only need to allocate at most one temporary mask, and can
2356         invert it's sense to provide the complementary pending execution
2357         mask.  Only calculate the size of the required temporary arrays
2358         if we need any.
2359         (gfc_trans_where): Update call to gfc_trans_where_2.
2360
2361 2006-03-01  Paul Thomas  <pault@gcc.gnu.org>
2362
2363         * iresolve.c (gfc_resolve_dot_product):  Remove any difference in
2364         treatment of logical types.
2365         * trans-intrinsic.c (gfc_conv_intrinsic_dot_product):  New function. 
2366
2367         PR fortran/26393
2368         * trans-decl.c (gfc_get_symbol_decl): Extend condition that symbols
2369         must be referenced to include unreferenced symbols in an interface
2370         body. 
2371
2372         PR fortran/20938
2373         * trans-array.c (gfc_conv_resolve_dependencies): Add call to
2374         gfc_are_equivalenced_arrays.
2375         * symbol.c (gfc_free_equiv_infos, gfc_free_equiv_lists): New
2376         functions. (gfc_free_namespace): Call them.
2377         * trans-common.c (copy_equiv_list_to_ns): New function.
2378         (add_equivalences): Call it.
2379         * gfortran.h: Add equiv_lists to gfc_namespace and define
2380         gfc_equiv_list and gfc_equiv_info.
2381         * dependency.c (gfc_are_equivalenced_arrays): New function.
2382         (gfc_check_dependency): Call it.
2383         * dependency.h: Prototype for gfc_are_equivalenced_arrays.
2384
2385 2006-03-01  Roger Sayle  <roger@eyesopen.com>
2386
2387         * dependency.c (gfc_is_same_range): Compare the stride, lower and
2388         upper bounds when testing array reference ranges for equality.
2389         (gfc_check_dependency): Fix indentation whitespace.
2390         (gfc_check_element_vs_element): Likewise.
2391         (gfc_dep_resolver): Likewise.
2392
2393 2006-02-28  Thomas Koenig  <Thomas.Koenig@online.de>
2394
2395         * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc):
2396         If the mask expression exists and has rank 0, enclose the
2397         generated loop in an "if (mask)".  Put the default
2398         initialization into the else branch.
2399
2400 2006-02-25  Thomas Koenig  <Thomas.Koenig@online.de>
2401
2402         PR fortran/23092
2403         * trans-intrinsic.c (gfc_conv_intrinsic_arith):  If the
2404         mask expression exists and has rank 0, enclose the generated
2405         loop in an "if (mask)".
2406         * (gfc_conv_intrinsic_minmaxloc):  Likewise.
2407
2408 2006-02-24  Paul Thomas  <pault@gcc.gnu.org>
2409
2410         PR fortran/26409
2411         * resolve.c (resolve_contained_functions, resolve_types,
2412         gfc_resolve): Revert patch of 2006-02-19.
2413
2414 2006-02-24  Paul Thomas  <pault@gcc.gnu.org>
2415
2416         PR fortran/24519
2417         * dependency.c (gfc_is_same_range): Correct typo.
2418         (gfc_check_section_vs_section): Call gfc_is_same_range.
2419
2420         PR fortran/25395
2421         * trans-common.c (add_equivalences): Add a new flag that is set when
2422         an equivalence is seen that prevents more from being reset until the
2423         start of a new traversal of the list, thus ensuring completion of
2424         all the equivalences.
2425
2426 2006-02-23  Erik Edelmann  <eedelman@gcc.gnu.org>
2427
2428         * module.c (read_module): Remove redundant code lines.
2429
2430 2006-02-20 Rafael \81Ávila de Esp\81índola <rafael.espindola@gmail.com>
2431         * Make-lang.in (FORTRAN): Remove
2432         (.PHONY): Remove F95 and f95. Add fortran
2433
2434 2006-02-20  Roger Sayle  <roger@eyesopen.com>
2435
2436         * trans-stmt.c (gfc_trans_where_2): Avoid updating unused current
2437         execution mask for empty WHERE/ELSEWHERE clauses.  Don't allocate
2438         temporary mask arrays if they won't be used.
2439
2440 2006-02-20  Roger Sayle  <roger@eyesopen.com>
2441
2442         * trans-stmt.c (gfc_trans_where_assign): Remove code to handle
2443         traversing a linked list of MASKs.  The MASK is now always a
2444         single element requiring no ANDing during the assignment.
2445
2446 2006-02-19  Thomas Koenig  <Thomas.Koenig@online.de>
2447
2448         * gfortran.texi:  Document environment variables which
2449         influence runtime behavior.
2450
2451 2006-02-19  H.J. Lu  <hongjiu.lu@intel.com>
2452
2453         * resolve.c (resolve_contained_functions): Call resolve_entries
2454         first.
2455         (resolve_types): Remove calls to resolve_entries and
2456         resolve_contained_functions.
2457         (gfc_resolve): Call resolve_contained_functions.
2458
2459 2006-02-19  Erik Edelmann  <eedelman@gcc.gnu.org>
2460
2461         PR fortran/26201
2462         * intrinsic.c (gfc_convert_type_warn): Call
2463         gfc_intrinsic_symbol() on the newly created symbol.
2464
2465 2006-02-19  Paul Thomas  <pault@gcc.gnu.org>
2466
2467         PR fortran/25054
2468         * resolve.c (is_non_constant_shape_array): New function.
2469         (resolve_fl_variable): Remove code for the new function and call it.
2470         (resolve_fl_namelist): New function.  Add test for namelist array
2471         with non-constant shape, using is_non_constant_shape_array.
2472         (resolve_symbol): Remove code for resolve_fl_namelist and call it.
2473
2474         PR fortran/25089
2475         * match.c (match_namelist): Increment the refs field of an accepted
2476         namelist object symbol.
2477         * resolve.c (resolve_fl_namelist): Test namelist objects for a conflict
2478         with contained or module procedures.
2479
2480 2006-02-18  Roger Sayle  <roger@eyesopen.com>
2481
2482         * trans-stmt.c (struct temporary_list): Delete.
2483         (gfc_trans_where_2): Major reorganization.  Remove no longer needed
2484         TEMP argument.  Allocate and deallocate the control mask and
2485         pending control mask locally.
2486         (gfc_trans_forall_1): Delete TEMP local variable, and update
2487         call to gfc_trans_where_2.  No need to deallocate arrays after.
2488         (gfc_evaluate_where_mask): Major reorganization.  Change return
2489         type to void.  Pass in parent execution mask, MASK, and two
2490         already allocated mask arrays CMASK and PMASK.  On return
2491         CMASK := MASK & COND, PMASK := MASK & !COND.  MASK, CMASK and
2492         CMASK may all be NULL, or refer to the same temporary arrays.
2493         (gfc_trans_where): Update call to gfc_trans_where_2.  We no
2494         longer need a TEMP variable or to deallocate temporary arrays
2495         allocated by gfc_trans_where_2.
2496
2497 2006-02-18   Danny Smith  <dannysmith@users.sourceforeg.net>
2498
2499         * gfortran.h (gfc_add_attribute): Change uint to unsigned int.
2500         * symbol.c (gfc_add_attribute): Likewise for definition.
2501         * resolve.c (resolve_global_procedure): Likewise for variable 'type'.
2502
2503 2006-02-17  Richard Sandiford  <richard@codesourcery.com>
2504
2505         * trans-common.c: Include rtl.h earlier.
2506         * trans-decl.c: Likewise.
2507
2508 2006-02-16  Jakub Jelinek  <jakub@redhat.com>
2509
2510         PR fortran/26224
2511         * parse.c (parse_omp_do, parse_omp_structured_block): Call
2512         gfc_commit_symbols and gfc_warning_check.
2513
2514         * openmp.c (resolve_omp_clauses): Add a dummy case label to workaround
2515         PR middle-end/26316.
2516
2517 2006-02-16  Paul Thomas  <pault@gcc.gnu.org>
2518
2519         PR fortran/24557
2520         * trans-expr.c (gfc_add_interface_mapping): Use the actual argument
2521         for character(*) arrays, rather than casting to the type and kind
2522         parameters of the formal argument.
2523
2524 2006-02-15  Toon Moene  <toon@moene.indiv.nluug.nl>
2525
2526         PR fortran/26054
2527         * options.c: Do not warn for Fortran 2003 features by default.
2528
2529 2006-02-15  Tobias Schl\81üter  <tobias.schlueter@physik.uni-muenchen.de>
2530
2531         * check.c: Update copyright years.
2532         
2533         * check.c (gfc_check_minloc_maxloc, check_reduction): Don't call
2534         dim_range_check on not-present optional dim argument.
2535
2536 2006-02-15  Jakub Jelinek  <jakub@redhat.com>
2537
2538         PR libgomp/25938
2539         PR libgomp/25984
2540         * Make-lang.in (install-finclude-dir): New goal.
2541         (fortran.install-common): Depend on install-finclude-dir.
2542         * lang-specs.h: If not -nostdinc, add -I finclude.
2543
2544 2006-02-14  Thomas Koenig  <Thomas.Koenig@online.de>
2545
2546         PR fortran/25045
2547         * check.c (dim_check):  Perform all checks if dim is optional.
2548         (gfc_check_minloc_maxloc):  Use dim_check and dim_rank_check
2549         to check dim argument.
2550         (check_reduction):  Likewise.
2551
2552 2006-02-14  Tobias Schl\81üter  <tobias.schlueter@physik.uni-muenchen.de>
2553
2554         PR fortran/26277
2555         * io.c (match_ltag): Mark label as referenced.
2556
2557 2006-02-14  Jakub Jelinek  <jakub@redhat.com>
2558             Richard Henderson  <rth@redhat.com>
2559             Diego Novillo  <dnovillo@redhat.com>
2560
2561         * invoke.texi: Document -fopenmp.
2562         * gfortran.texi (Extensions): Document OpenMP.
2563
2564         Backport from gomp-20050608-branch
2565         * trans-openmp.c: Call build_omp_clause instead of
2566         make_node when creating OMP_CLAUSE_* trees.
2567         (gfc_trans_omp_reduction_list): Remove argument 'code'.
2568         Adjust all callers.
2569
2570         * trans.h (build4_v): Define.
2571         * trans-openmp.c: Call build4_v to create OMP_PARALLEL nodes.
2572         Call build3_v to create OMP_SECTIONS nodes.
2573
2574         PR fortran/25162
2575         * openmp.c (gfc_match_omp_variable_list): Call gfc_set_sym_referenced
2576         on all symbols added to the variable list.
2577
2578         * openmp.c (gfc_match_omp_clauses): Fix check for non-INTRINSIC
2579         procedure symbol in REDUCTION.
2580
2581         * trans-openmp.c (gfc_trans_omp_array_reduction): Use gfc_add
2582         for MINUS_EXPR OMP_CLAUSE_REDUCTION_CODE.
2583
2584         * trans-openmp.c (gfc_trans_omp_do): Add PBLOCK argument.  If PBLOCK
2585         is non-NULL, evaluate INIT/COND/INCR and chunk size expressions in
2586         that statement block.
2587         (gfc_trans_omp_parallel_do): Pass non-NULL PBLOCK to gfc_trans_omp_do
2588         for non-ordered non-static combined loops.
2589         (gfc_trans_omp_directive): Pass NULL PBLOCK to gfc_trans_omp_do.
2590
2591         * openmp.c: Include target.h and toplev.h.
2592         (gfc_match_omp_threadprivate): Emit diagnostic if target does
2593         not support TLS.
2594         * Make-lang.in (fortran/openmp.o): Add dependencies on
2595         target.h and toplev.h.
2596
2597         * trans-decl.c (gfc_get_fake_result_decl): Set GFC_DECL_RESULT.
2598         * trans-openmp.c (gfc_omp_privatize_by_reference): Make
2599         DECL_ARTIFICIAL vars predetermined shared except GFC_DECL_RESULT.
2600         (gfc_omp_disregard_value_expr): Handle GFC_DECL_RESULT.
2601         (gfc_trans_omp_variable): New function.
2602         (gfc_trans_omp_variable_list, gfc_trans_omp_reduction_list): Use it.
2603         * trans.h (GFC_DECL_RESULT): Define.
2604
2605         * trans-openmp.c (gfc_omp_firstprivatize_type_sizes): New function.
2606         * f95-lang.c (LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES): Define.
2607         * trans.h (gfc_omp_firstprivatize_type_sizes): New prototype.
2608
2609         * trans-openmp.c (gfc_omp_privatize_by_reference): Return
2610         true if a pointer has GFC_DECL_SAVED_DESCRIPTOR set.
2611         (gfc_trans_omp_array_reduction, gfc_trans_omp_reduction_list): New
2612         functions.
2613         (gfc_trans_omp_clauses): Add WHERE argument.  Call
2614         gfc_trans_omp_reduction_list rather than gfc_trans_omp_variable_list
2615         for reductions.
2616         (gfc_trans_omp_do, gfc_trans_omp_parallel, gfc_trans_omp_parallel_do,
2617         gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare,
2618         gfc_trans_omp_sections, gfc_trans_omp_single): Adjust
2619         gfc_trans_omp_clauses callers.
2620
2621         * openmp.c (omp_current_do_code): New var.
2622         (gfc_resolve_omp_do_blocks): New function.
2623         (gfc_resolve_omp_parallel_blocks): Call it.
2624         (gfc_resolve_do_iterator): Add CODE argument.  Don't propagate
2625         predetermination if argument is !$omp do or !$omp parallel do
2626         iteration variable.
2627         * resolve.c (resolve_code): Call gfc_resolve_omp_do_blocks
2628         for EXEC_OMP_DO.  Adjust gfc_resolve_do_iterator caller.
2629         * fortran.h (gfc_resolve_omp_do_blocks): New prototype.
2630         (gfc_resolve_do_iterator): Add CODE argument.
2631
2632         * trans.h (gfc_omp_predetermined_sharing,
2633         gfc_omp_disregard_value_expr, gfc_omp_private_debug_clause): New
2634         prototypes.
2635         (GFC_DECL_COMMON_OR_EQUIV, GFC_DECL_CRAY_POINTEE): Define.
2636         * trans-openmp.c (gfc_omp_predetermined_sharing,
2637         gfc_omp_disregard_value_expr, gfc_omp_private_debug_clause): New
2638         functions.
2639         * trans-common.c (build_equiv_decl, build_common_decl,
2640         create_common): Set GFC_DECL_COMMON_OR_EQUIV flag on the decls.
2641         * trans-decl.c (gfc_finish_cray_pointee): Set GFC_DECL_CRAY_POINTEE
2642         on the decl.
2643         * f95-lang.c (LANG_HOOKS_OMP_PREDETERMINED_SHARING,
2644         LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR,
2645         LANG_HOOKS_OMP_PRIVATE_DEBUG_CLAUSE): Define.
2646
2647         * openmp.c (resolve_omp_clauses): Remove extraneous comma.
2648
2649         * symbol.c (check_conflict): Add conflict between cray_pointee and
2650         threadprivate.
2651         * openmp.c (gfc_match_omp_threadprivate): Fail if
2652         gfc_add_threadprivate returned FAILURE.
2653         (resolve_omp_clauses): Diagnose Cray pointees in SHARED,
2654         {,FIRST,LAST}PRIVATE and REDUCTION clauses and Cray pointers in
2655         {FIRST,LAST}PRIVATE and REDUCTION clauses.
2656
2657         * resolve.c (omp_workshare_flag): New variable.
2658         (resolve_function): Diagnose use of non-ELEMENTAL user defined
2659         function in WORKSHARE construct.
2660         (resolve_code): Cleanup forall_save use.  Make sure omp_workshare_flag
2661         is set to correct value in different contexts.
2662
2663         * openmp.c (resolve_omp_clauses): Replace %s with '%s' when printing
2664         variable name.
2665         (resolve_omp_atomic): Likewise.
2666
2667         PR fortran/24493
2668         * scanner.c (skip_free_comments): Set at_bol at the beginning of the
2669         loop, not before it.
2670         (skip_fixed_comments): Handle ! comments in the middle of line here
2671         as well.
2672         (gfc_skip_comments): Use skip_fixed_comments for FIXED_FORM even if
2673         not at BOL.
2674         (gfc_next_char_literal): Fix expected canonicalized *$omp string.
2675
2676         * trans-openmp.c (gfc_trans_omp_do): Use make_node and explicit
2677         initialization to build OMP_FOR instead of build.
2678
2679         * trans-decl.c (gfc_gimplify_function): Invoke
2680         diagnose_omp_structured_block_errors.
2681
2682         * trans-openmp.c (gfc_trans_omp_master): Use OMP_MASTER.
2683         (gfc_trans_omp_ordered): Use OMP_ORDERED.
2684
2685         * gfortran.h (gfc_resolve_do_iterator, gfc_resolve_blocks,
2686         gfc_resolve_omp_parallel_blocks): New prototypes.
2687         * resolve.c (resolve_blocks): Renamed to...
2688         (gfc_resolve_blocks): ... this.  Remove static.
2689         (gfc_resolve_forall): Adjust caller.
2690         (resolve_code): Only call gfc_resolve_blocks if code->block != 0
2691         and not for EXEC_OMP_PARALLEL* directives.  Call
2692         gfc_resolve_omp_parallel_blocks for EXEC_OMP_PARALLEL* directives.
2693         Call gfc_resolve_do_iterator if resolved successfully EXEC_DO
2694         iterator.
2695         * openmp.c: Include pointer-set.h.
2696         (omp_current_ctx): New variable.
2697         (gfc_resolve_omp_parallel_blocks, gfc_resolve_do_iterator): New
2698         functions.
2699         * Make-lang.in (fortran/openmp.o): Depend on pointer-set.h.
2700
2701         * openmp.c (gfc_match_omp_clauses): For max/min/iand/ior/ieor,
2702         look up symbol if it exists, use its name instead and, if it is not
2703         INTRINSIC, issue diagnostics.
2704
2705         * parse.c (parse_omp_do): Handle implied end do properly.
2706         (parse_executable): If parse_omp_do returned ST_IMPLIED_ENDDO,
2707         return it instead of continuing.
2708
2709         * trans-openmp.c (gfc_trans_omp_critical): Update for changed
2710         operand numbering.
2711         (gfc_trans_omp_do, gfc_trans_omp_parallel, gfc_trans_omp_parallel_do,
2712         gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare,
2713         gfc_trans_omp_sections, gfc_trans_omp_single): Likewise.
2714
2715         * trans.h (gfc_omp_privatize_by_reference): New prototype.
2716         * f95-lang.c (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Redefine
2717         to gfc_omp_privatize_by_reference.
2718         * trans-openmp.c (gfc_omp_privatize_by_reference): New function.
2719
2720         * trans-stmt.h (gfc_trans_omp_directive): Add comment.
2721
2722         * openmp.c (gfc_match_omp_variable_list): Add ALLOW_COMMON argument.
2723         Disallow COMMON matching if it is set.
2724         (gfc_match_omp_clauses, gfc_match_omp_flush): Adjust all callers.
2725         (resolve_omp_clauses): Show locus in error messages.  Check that
2726         variable types in reduction clauses are appropriate for reduction
2727         operators.
2728
2729         * resolve.c (resolve_symbol): Don't error if a threadprivate module
2730         variable isn't SAVEd.
2731
2732         * trans-openmp.c (gfc_trans_omp_do): Put count into BLOCK, not BODY.
2733         Fix typo in condition.  Fix DOVAR initialization.
2734
2735         * openmp.c (gfc_match_omp_clauses): Match min/iand/ior/ieor
2736         rather than .min. etc.
2737
2738         * trans-openmpc.c (omp_not_yet): Remove.
2739         (gfc_trans_omp_parallel_do): Keep listprivate clause on parallel.
2740         Force creation of BIND_EXPR around the workshare construct.
2741         (gfc_trans_omp_parallel_sections): Likewise.
2742         (gfc_trans_omp_parallel_workshare): Likewise.
2743
2744         * types.def (BT_I16, BT_FN_I16_VPTR_I16,
2745         BT_FN_BOOL_VPTR_I16_I16, BT_FN_I16_VPTR_I16_I16): Add.
2746
2747         * trans-openmp.c (gfc_trans_omp_clauses): Create OMP_CLAUSE_DEFAULT.
2748         (gfc_trans_omp_code): New function.
2749         (gfc_trans_omp_do): Use it, remove omp_not_yet uses.
2750         (gfc_trans_omp_parallel, gfc_trans_omp_single): Likewise.
2751         (gfc_trans_omp_sections): Likewise.  Only treat empty last section
2752         specially if lastprivate clause is present.
2753         * f95-lang.c (gfc_init_builtin_functions): Create BUILT_IN_TRAP
2754         builtin.
2755
2756         * trans-openmp.c (gfc_trans_omp_variable_list): Update for
2757         OMP_CLAUSE_DECL name change.
2758         (gfc_trans_omp_do): Likewise.
2759
2760         * trans-openmp.c (gfc_trans_omp_clauses): Create OMP_CLAUSE_REDUCTION
2761         clauses.
2762         (gfc_trans_omp_atomic): Build OMP_ATOMIC instead of expanding
2763         sync builtins directly.
2764         (gfc_trans_omp_single): Build OMP_SINGLE statement.
2765
2766         * trans-openmp.c (gfc_trans_add_clause): New.
2767         (gfc_trans_omp_variable_list): Take a tree code and build the clause
2768         node here.  Link it to the head of a list.
2769         (gfc_trans_omp_clauses): Update to match.
2770         (gfc_trans_omp_do): Use gfc_trans_add_clause.
2771
2772         * trans-openmp.c (gfc_trans_omp_clauses): Change second argument to
2773         gfc_omp_clauses *.  Use gfc_evaluate_now instead of creating
2774         temporaries by hand.
2775         (gfc_trans_omp_atomic, gfc_trans_omp_critical): Use buildN_v macros.
2776         (gfc_trans_omp_do): New function.
2777         (gfc_trans_omp_master): Dont' check for gfc_trans_code returning NULL.
2778         (gfc_trans_omp_parallel): Adjust gfc_trans_omp_clauses caller.
2779         Use buildN_v macros.
2780         (gfc_trans_omp_parallel_do, gfc_trans_omp_parallel_sections,
2781         gfc_trans_omp_parallel_workshare, gfc_trans_omp_sections,
2782         gfc_trans_omp_single, gfc_trans_omp_workshare): New functions.
2783         (gfc_trans_omp_directive): Use them.
2784         * parse.c (parse_omp_do): Allow new_st.op == EXEC_NOP.
2785         * openmp.c (resolve_omp_clauses): Check for list items present
2786         in multiple clauses.
2787         (resolve_omp_do): Check that iteration variable is not THREADPRIVATE
2788         and is not present in any clause variable lists other than PRIVATE
2789         or LASTPRIVATE.
2790
2791         * gfortran.h (symbol_attribute): Add threadprivate bit.
2792         (gfc_common_head): Add threadprivate member, change use_assoc
2793         and saved into char to save space.
2794         (gfc_add_threadprivate): New prototype.
2795         * symbol.c (check_conflict): Handle threadprivate.
2796         (gfc_add_threadprivate): New function.
2797         (gfc_copy_attr): Copy threadprivate.
2798         * trans-openmp.c (gfc_trans_omp_clauses): Avoid creating a temporary
2799         if IF or NUM_THREADS is constant.  Create OMP_CLAUSE_SCHEDULE and
2800         OMP_CLAUSE_ORDERED.
2801         * resolve.c (resolve_symbol): Complain if a THREADPRIVATE symbol
2802         outside a module and not in COMMON has is not SAVEd.
2803         (resolve_equivalence): Ensure THREADPRIVATE objects don't get
2804         EQUIVALENCEd.
2805         * trans-common.c: Include target.h and rtl.h.
2806         (build_common_decl): Set DECL_TLS_MODEL if THREADPRIVATE.
2807         * trans-decl.c: Include rtl.h.
2808         (gfc_finish_var_decl): Set DECL_TLS_MODEL if THREADPRIVATE.
2809         * dump-parse-tree.c (gfc_show_attr): Handle THREADPRIVATE.
2810         * Make-lang.in (fortran/trans-decl.o): Depend on $(RTL_H).
2811         (fortran/trans-common.o): Depend on $(RTL_H) and $(TARGET_H).
2812         * openmp.c (gfc_match_omp_variable_list): Ensure COMMON block
2813         is from current namespace.
2814         (gfc_match_omp_threadprivate): Rewrite.
2815         (resolve_omp_clauses): Check some clause restrictions.
2816         * module.c (ab_attribute): Add AB_THREADPRIVATE.
2817         (attr_bits): Add THREADPRIVATE.
2818         (mio_symbol_attribute, mio_symbol_attribute): Handle threadprivate.
2819         (load_commons, write_common, write_blank_common): Adjust for type
2820         change of saved, store/load threadprivate bit from the integer
2821         as well.
2822
2823         * types.def (BT_FN_UINT_UINT): New.
2824         (BT_FN_VOID_UINT_UINT): Remove.
2825
2826         * trans-openmp.c (gfc_trans_omp_clauses, gfc_trans_omp_barrier,
2827         gfc_trans_omp_critical, gfc_trans_omp_flush, gfc_trans_omp_master,
2828         gfc_trans_omp_ordered, gfc_trans_omp_parallel): New functions.
2829         (gfc_trans_omp_directive): Use them.
2830
2831         * openmp.c (expr_references_sym): Add SE argument, don't look
2832         into SE tree.
2833         (is_conversion): New function.
2834         (resolve_omp_atomic): Adjust expr_references_sym callers.  Handle
2835         promoted expressions.
2836         * trans-openmp.c (gfc_trans_omp_atomic): New function.
2837         (gfc_trans_omp_directive): Call it.
2838
2839         * f95-lang.c (builtin_type_for_size): New function.
2840         (gfc_init_builtin_functions): Initialize synchronization and
2841         OpenMP builtins.
2842         * types.def: New file.
2843         * Make-lang.in (f95-lang.o): Depend on $(BUILTINS_DEF) and
2844         fortran/types.def.
2845
2846         * trans-openmp.c: Rename GOMP_* tree codes into OMP_*.
2847
2848         * dump-parse-tree.c (show_symtree): Don't crash if ns->proc_name
2849         is NULL.
2850
2851         * dump-parse-tree.c (gfc_show_namelist, gfc_show_omp_node): New
2852         functions.
2853         (gfc_show_code_node): Call gfc_show_omp_node for EXEC_OMP_* nodes.
2854
2855         * parse.c (parse_omp_do): Call pop_state before next_statement.
2856         * openmp.c (expr_references_sym, resolve_omp_atomic, resolve_omp_do):
2857         New functions.
2858         (gfc_resolve_omp_directive): Call them.
2859         * match.c (match_exit_cycle): Issue error if EXIT or CYCLE statement
2860         leaves an OpenMP structured block or if EXIT terminates !$omp do
2861         loop.
2862
2863         * Make-lang.in (F95_PARSER_OBJS): Add fortran/openmp.o.
2864         (F95_OBJS): Add fortran/trans-openmp.o.
2865         (fortran/trans-openmp.o): Depend on $(GFORTRAN_TRANS_DEPS).
2866         * lang.opt: Add -fopenmp option.
2867         * options.c (gfc_init_options): Initialize it.
2868         (gfc_handle_option): Handle it.
2869         * gfortran.h (ST_OMP_ATOMIC, ST_OMP_BARRIER, ST_OMP_CRITICAL,
2870         ST_OMP_END_CRITICAL, ST_OMP_END_DO, ST_OMP_END_MASTER,
2871         ST_OMP_END_ORDERED, ST_OMP_END_PARALLEL, ST_OMP_END_PARALLEL_DO,
2872         ST_OMP_END_PARALLEL_SECTIONS, ST_OMP_END_PARALLEL_WORKSHARE,
2873         ST_OMP_END_SECTIONS, ST_OMP_END_SINGLE, ST_OMP_END_WORKSHARE,
2874         ST_OMP_DO, ST_OMP_FLUSH, ST_OMP_MASTER, ST_OMP_ORDERED,
2875         ST_OMP_PARALLEL, ST_OMP_PARALLEL_DO, ST_OMP_PARALLEL_SECTIONS,
2876         ST_OMP_PARALLEL_WORKSHARE, ST_OMP_SECTIONS, ST_OMP_SECTION,
2877         ST_OMP_SINGLE, ST_OMP_THREADPRIVATE, ST_OMP_WORKSHARE): New
2878         statement codes.
2879         (OMP_LIST_PRIVATE, OMP_LIST_FIRSTPRIVATE, OMP_LIST_LASTPRIVATE,
2880         OMP_LIST_COPYPRIVATE, OMP_LIST_SHARED, OMP_LIST_COPYIN,
2881         OMP_LIST_PLUS, OMP_LIST_REDUCTION_FIRST, OMP_LIST_MULT,
2882         OMP_LIST_SUB, OMP_LIST_AND, OMP_LIST_OR, OMP_LIST_EQV,
2883         OMP_LIST_NEQV, OMP_LIST_MAX, OMP_LIST_MIN, OMP_LIST_IAND,
2884         OMP_LIST_IOR, OMP_LIST_IEOR, OMP_LIST_REDUCTION_LAST, OMP_LIST_NUM):
2885         New OpenMP variable list types.
2886         (gfc_omp_clauses): New typedef.
2887         (gfc_get_omp_clauses): Define.
2888         (EXEC_OMP_CRITICAL, EXEC_OMP_DO, EXEC_OMP_FLUSH, EXEC_OMP_MASTER,
2889         EXEC_OMP_ORDERED, EXEC_OMP_PARALLEL, EXEC_OMP_PARALLEL_DO,
2890         EXEC_OMP_PARALLEL_SECTIONS, EXEC_OMP_PARALLEL_WORKSHARE,
2891         EXEC_OMP_SECTIONS, EXEC_OMP_SINGLE, EXEC_OMP_WORKSHARE,
2892         EXEC_OMP_ATOMIC, EXEC_OMP_BARRIER, EXEC_OMP_END_NOWAIT,
2893         EXEC_OMP_END_SINGLE): New OpenMP gfc_exec_op codes.
2894         (struct gfc_code): Add omp_clauses, omp_name, omp_namelist
2895         and omp_bool fields to ext union.
2896         (flag_openmp): Declare.
2897         (gfc_free_omp_clauses, gfc_resolve_omp_directive): New prototypes.
2898         * scanner.c (openmp_flag, openmp_locus): New variables.
2899         (skip_free_comments, skip_fixed_comments, gfc_next_char_literal):
2900         Handle OpenMP directive lines and conditional compilation magic
2901         comments.
2902         * parse.h (COMP_OMP_STRUCTURED_BLOCK): New compile state.
2903         * parse.c (decode_omp_directive, parse_omp_do, parse_omp_atomic,
2904         parse_omp_structured_block): New functions.
2905         (next_free, next_fixed): Parse OpenMP directives.
2906         (case_executable, case_exec_markers, case_decl): Add ST_OMP_*
2907         codes.
2908         (gfc_ascii_statement): Handle ST_OMP_* codes.
2909         (parse_executable): Rearrange the loop slightly, so that
2910         parse_omp_do can return next_statement.
2911         * match.h (gfc_match_omp_eos, gfc_match_omp_atomic,
2912         gfc_match_omp_barrier, gfc_match_omp_critical, gfc_match_omp_do,
2913         gfc_match_omp_flush, gfc_match_omp_master, gfc_match_omp_ordered,
2914         gfc_match_omp_parallel, gfc_match_omp_parallel_do,
2915         gfc_match_omp_parallel_sections, gfc_match_omp_parallel_workshare,
2916         gfc_match_omp_sections, gfc_match_omp_single,
2917         gfc_match_omp_threadprivate, gfc_match_omp_workshare,
2918         gfc_match_omp_end_nowait, gfc_match_omp_end_single): New prototypes.
2919         * resolve.c (resolve_blocks): Ignore EXEC_OMP_* block directives.
2920         (resolve_code): Call gfc_resolve_omp_directive on EXEC_OMP_*
2921         directives.
2922         * trans.c (gfc_trans_code): Call gfc_trans_omp_directive for
2923         EXEC_OMP_* directives.
2924         * st.c (gfc_free_statement): Handle EXEC_OMP_* statement freeing.
2925         * trans-stmt.h (gfc_trans_omp_directive): New prototype.
2926         * openmp.c: New file.
2927         * trans-openmp.c: New file.
2928
2929 2006-02-13  Andrew Pinski  <pinskia@physics.uc.edu>
2930             Jakub Jelinek  <jakub@redhat.com>
2931
2932         PR fortran/26246
2933         * trans-decl.c (gfc_get_symbol_decl, gfc_get_fake_result_decl): Use
2934         gfc_add_decl_to_function rather than gfc_finish_var_decl on length.
2935
2936 2006-02-13  Paul Thomas  <pault@gcc.gnu.org>
2937
2938         PR fortran/26074
2939         PR fortran/25103
2940         * resolve.c (resolve_symbol): Extend the requirement that module
2941         arrays have constant bounds to those in the main program.  At the
2942         same time simplify the array bounds, to avoiding trapping parameter
2943         array references, and exclude automatic character length from main
2944         and modules. Rearrange resolve_symbol and resolve_derived to put as
2945         each flavor together, as much as is possible and move all specific
2946         code for flavors FL_VARIABLE, FL_PROCEDURE and FL_PARAMETER into new
2947         functions.
2948         (resolve_fl_var_and_proc, resolve_fl_variable, resolve_fl_procedure):
2949         New functions to do work of resolve_symbol.
2950         (resolve_index_expr): New function that is called from resolved_symbol
2951         and is extracted from resolve_charlen.
2952         (resolve_charlen): Call this new function.
2953         (resolve_fl_derived): Renamed resolve_derived to be consistent with
2954         the naming of the new functions for the other flavours.  Change the
2955         charlen checking so that the style is consistent with other similar
2956         checks. Add the generation of the gfc_dt_list, removed from resolve_
2957         symbol.
2958
2959         PR fortran/20861
2960         * resolve.c (resolve_actual_arglist): Prevent internal procedures
2961         from being dummy arguments.
2962
2963         PR fortran/20871
2964         * resolve.c (resolve_actual_arglist): Prevent pure but non-intrinsic
2965         procedures from being dummy arguments.
2966
2967         PR fortran/25083
2968         * resolve.c (check_data_variable): Add test that data variable is in
2969         COMMON.
2970
2971         PR fortran/25088
2972         * resolve.c (resolve_call): Add test that the subroutine does not
2973         have a type.
2974
2975 2006-02-12  Erik Edelmann  <eedelman@gcc.gnu.org>
2976
2977         PR fortran/25806
2978         * trans-array.c (gfc_trans_allocate_array_storage): New argument
2979         dealloc; free the temporary only if dealloc is true.
2980         (gfc_trans_allocate_temp_array): New argument bool dealloc, to be
2981         passed onwards to gfc_trans_allocate_array_storage.
2982         (gfc_trans_array_constructor, gfc_conv_loop_setup): Update call to
2983         gfc_trans_allocate_temp_array.
2984         * trans-array.h (gfc_trans_allocate_temp_array): Update function
2985         prototype.
2986         * trans-expr.c (gfc_conv_function_call): Set new argument 'dealloc'
2987         to gfc_trans_allocate_temp_array to false in case of functions
2988         returning pointers.
2989         (gfc_trans_arrayfunc_assign): Return NULL for functions returning
2990         pointers.
2991
2992 2006-02-10  Steven G. Kargl  <kargls@comcast.net>
2993
2994         PR fortran/20858
2995         *decl.c (variable_decl): Improve error message.  Remove initialization
2996         typespec.  Wrap long line.
2997         *expr.c (gfc_check_pointer_assign): Permit checking of type, kind type,
2998         and rank.
2999         *simplify.c (gfc_simplify_null): Ensure type, kind type, and rank
3000         are set.
3001
3002
3003 2006-02-10  Tobias Schl\81üter  <tobias.schlueter@physik.uni-muenchen.de>
3004
3005         PR fortran/14771
3006         * arith.c (eval_intrinsic): Accept INTRINSIC_PARENTHESES.
3007         * expr.c (check_intrinsic_op): Likewise.
3008         * module.c (mio_expr): Likewise.
3009
3010 2006-02-09  Tobias Schl\81üter  <tobias.schlueter@physik.uni-muenchen.de>
3011
3012         * dump-parse-tree.c: Update copyright years.
3013         * matchexp.c: Likewise.
3014         * module.c: Likewise.
3015
3016         PR fortran/14771
3017         * gfortran.h (gfc_intrinsic_op): Add INTRINSIC_PARENTHESES.
3018         * dump-parse-tree (gfc_show_expr): Handle INTRINSIC_PARENTHESES.
3019         * expr.c (simplify_intrinsic_op): Treat INTRINSIC_PARENTHESES as
3020         if it were INTRINSIC_UPLUS.
3021         * resolve.c (resolve_operator): Handle INTRINSIC_PARENTHESES.
3022         * match.c (intrinsic_operators): Add INTRINSIC_PARENTHESES.
3023         * matchexp.c (match_primary): Record parentheses surrounding
3024         numeric expressions.
3025         * module.c (intrinsics): Add INTRINSIC_PARENTHESES for module
3026         dumping.
3027         * trans-expr.c (gfc_conv_expr_op): Handle INTRINSIC_PARENTHESES.
3028
3029 2006-02-09  Paul Thomas  <pault@gcc.gnu.org>
3030
3031         PR fortran/26038
3032         * trans-stmt.c (gfc_trans_allocate): Provide assumed character length
3033         scalar with missing backend_decl for the hidden dummy charlen.
3034
3035         PR fortran/25059
3036         * interface.c (gfc_extend_assign): Remove detection of non-PURE
3037         subroutine in assignment interface, with gfc_error, and put it in
3038         * resolve.c (resolve_code).
3039
3040         PR fortran/25070
3041         * interface.c (gfc_procedure_use): Flag rank checking for non-
3042         elemental, contained or interface procedures in call to
3043         (compare_actual_formal), where ranks are checked for assumed
3044         shape arrays..
3045
3046 2006-02-08  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
3047
3048         PR libfortran/25425
3049         * trans-decl.c (gfc_generate_function_code): Add new argument,
3050         pedantic, to set_std call.
3051
3052 2006-02-06  Thomas Koenig  <Thomas.Koenig@online.de>
3053
3054         PR libfortran/23815
3055         * gfortran.texi: Document the GFORTRAN_CONVERT_UNIT environment
3056         variable.
3057         * invoke.texi:  Mention the "Runtime" chapter.
3058         Document the -fconvert= option.
3059         * gfortran.h:  Add options_convert.
3060         * lang.opt:  Add fconvert=little-endian, fconvert=big-endian,
3061         fconvert=native and fconvert=swap.
3062         * trans-decl.c (top level):  Add gfor_fndecl_set_convert.
3063         (gfc_build_builtin_function_decls):  Set gfor_fndecl_set_convert.
3064         (gfc_generate_function_code):  If -fconvert was specified,
3065         and this is the main program, add a call to set_convert().
3066         * options.c:  Handle the -fconvert options.
3067
3068 2006-02-06  Roger Sayle  <roger@eyesopen.com>
3069
3070         * trans-stmt.c (gfc_evaluate_where_mask): Allow the NMASK argument
3071         to be NULL to indicate that the not mask isn't required.
3072         (gfc_trans_where_2): Remove PMASK argument.  Avoid calculating the
3073         pending mask for the last clause of a WHERE chain.  Update recursive
3074         call.
3075         (gfc_trans_forall_1): Update call to gfc_trans_where_2.
3076         (gfc_trans_where): Likewise.
3077
3078 2006-02-06  Jakub Jelinek  <jakub@redhat.com>
3079
3080         Backport from gomp-20050608-branch
3081         * trans-decl.c (create_function_arglist): Handle dummy functions.
3082
3083         * trans-decl.c (gfc_get_symbol_decl): Revert explicit setting of
3084         TYPE_SIZE_UNIT.
3085         (gfc_trans_vla_type_sizes): Also "gimplify"
3086         GFC_TYPE_ARRAY_DATAPTR_TYPE for GFC_DESCRIPTOR_TYPE_P types.
3087         * trans-array.c (gfc_trans_deferred_array): Call
3088         gfc_trans_vla_type_sizes.
3089
3090         * trans-decl.c (saved_function_decls, saved_parent_function_decls):
3091         Remove unnecessary initialization.
3092         (create_function_arglist): Make sure __result has complete type.
3093         (gfc_get_fake_result_decl): Change current_fake_result_decl into
3094         a tree chain.  For entry master, create a separate variable
3095         for each result name.  For BT_CHARACTER results, call
3096         gfc_finish_var_decl on length even if it has been already created,
3097         but not pushdecl'ed.
3098         (gfc_trans_vla_type_sizes): For function/entry result, adjust
3099         result value type, not the FUNCTION_TYPE.
3100         (gfc_generate_function_code): Adjust for current_fake_result_decl
3101         changes.
3102         (gfc_trans_deferred_vars): Likewise.  Call gfc_trans_vla_type_sizes
3103         even on result if it is assumed-length character.
3104
3105         * trans-decl.c (gfc_trans_dummy_character): Add SYM argument.
3106         Call gfc_trans_vla_type_sizes.
3107         (gfc_trans_auto_character_variable): Call gfc_trans_vla_type_sizes.
3108         (gfc_trans_vla_one_sizepos, gfc_trans_vla_type_sizes_1,
3109         gfc_trans_vla_type_sizes): New functions.
3110         (gfc_trans_deferred_vars): Adjust gfc_trans_dummy_character
3111         callers.  Call gfc_trans_vla_type_sizes on assumed-length
3112         character parameters.
3113         * trans-array.c (gfc_trans_array_bounds,
3114         gfc_trans_auto_array_allocation, gfc_trans_dummy_array_bias): Call
3115         gfc_trans_vla_type_sizes.
3116         * trans.h (gfc_trans_vla_type_sizes): New prototype.
3117
3118         * trans-decl.c (gfc_build_qualified_array): For non-assumed-size
3119         arrays without constant size, create also an index var for
3120         GFC_TYPE_ARRAY_SIZE (type).  If the type is incomplete, complete
3121         it as 0..size-1.
3122         (gfc_create_string_length): Don't call gfc_defer_symbol_init
3123         if just creating DECL_ARGUMENTS.
3124         (gfc_get_symbol_decl): Call gfc_finish_var_decl and
3125         gfc_defer_symbol_init even if ts.cl->backend_decl is already
3126         set to a VAR_DECL that doesn't have DECL_CONTEXT yet.
3127         (create_function_arglist): Rework, so that hidden length
3128         arguments for CHARACTER parameters are created together with
3129         the parameters.  Resolve ts.cl->backend_decl for CHARACTER
3130         parameters.  If the argument is a non-constant length array
3131         or CHARACTER, ensure PARM_DECL has different type than
3132         its DECL_ARG_TYPE.
3133         (generate_local_decl): Call gfc_get_symbol_decl even
3134         for non-referenced non-constant length CHARACTER parameters
3135         after optionally issuing warnings.
3136         * trans-array.c (gfc_trans_array_bounds): Set last stride
3137         to GFC_TYPE_ARRAY_SIZE (type) to initialize it as well.
3138         (gfc_trans_dummy_array_bias): Initialize GFC_TYPE_ARRAY_SIZE (type)
3139         variable as well.
3140
3141         * trans-expr.c (gfc_conv_expr_val): Fix comment typo.
3142
3143         * trans-stmt.c (gfc_trans_simple_do): Fix comment.
3144
3145 2006-02-04  Roger Sayle  <roger@eyesopen.com>
3146
3147         * dependency.c (gfc_check_dependency): Remove unused vars and nvars
3148         arguments.  Replace with an "identical" argument.  A full array
3149         reference to the same symbol is a dependency if identical is true.
3150         * dependency.h (gfc_check_dependency): Update prototype.
3151         * trans-array.h (gfc_check_dependency): Delete duplicate prototype.
3152         * trans-stmt.c: #include dependency.h for gfc_check_dependency.
3153         (gfc_trans_forall_1): Update calls to gfc_check_dependency.
3154         (gfc_trans_where_2): Likewise.  Remove unneeded variables.
3155         (gfc_trans_where_3): New function for simple non-dependent WHEREs.
3156         (gfc_trans_where): Call gfc_trans_where_3 to translate simple
3157         F90-style WHERE statements without internal dependencies.
3158         * Make-lang.in (trans-stmt.o): Depend upon dependency.h.
3159
3160 2006-02-05  H.J. Lu  <hongjiu.lu@intel.com>
3161
3162         PR fortran/26041
3163         PR fortran/26064
3164         * resolve.c (resolve_types): New function.
3165         (resolve_codes): Likewise.
3166         (gfc_resolve): Use them.
3167
3168 2006-02-05  Roger Sayle  <roger@eyesopen.com>
3169
3170         * trans-stmt.c (gfc_evaluate_where_mask): Use LOGICAL*1 for WHERE
3171         masks instead of LOGICAL*4.
3172
3173 2006-02-05  Jakub Jelinek  <jakub@redhat.com>
3174
3175         * resolve.c (resolve_symbol): Initialize constructor_expr to NULL.
3176
3177 2006-02-04  Thomas Koenig  <Thomas.Koenig@online.de>
3178
3179         PR fortran/25075
3180         check.c (identical_dimen_shape):  New function.
3181         (check_dot_product):  Use identical_dimen_shape() to check sizes
3182         for dot_product.
3183         (gfc_check_matmul):  Likewise.
3184         (gfc_check_merge):  Check conformance between tsource and fsource
3185         and between tsource and mask.
3186         (gfc_check_pack):  Check conformance between array and mask.
3187
3188 2006-02-03  Steven G. Kargl  <kargls@comcast>
3189             Paul Thomas  <pault@gcc.gnu.org>
3190
3191         PR fortran/20845
3192         * resolve.c (resolve_symbol): Default initialization of derived type
3193         component reguires the SAVE attribute.
3194
3195 2006-02-02  Steven G. Kargl  <kargls@comcast>
3196
3197         PR fortran/24958
3198         match.c (gfc_match_nullify):  Free the list from head not tail.
3199
3200         PR fortran/25072
3201         * match.c (match_forall_header): Fix internal error caused by bogus
3202         gfc_epxr pointers.
3203
3204
3205 2006-01-31  Thomas Koenig  <Thomas.Koenig@online.de>
3206
3207         PR fortran/26039
3208         expr.c (gfc_check_conformance):  Reorder error message
3209         to avoid plural.
3210         check.c(gfc_check_minloc_maxloc):  Call gfc_check_conformance
3211         for checking arguments array and mask.
3212         (check_reduction):  Likewise.
3213
3214 2006-01-30  Erik Edelmann  <eedelman@gcc.gnu.org>
3215
3216         PR fortran/24266
3217         * trans-io.c (set_internal_unit): Check the rank of the
3218         expression node itself instead of its symbol.
3219
3220 2006-01-29  Paul Thomas  <pault@gcc.gnu.org>
3221
3222         PR fortran/18578
3223         PR fortran/18579
3224         PR fortran/20857
3225         PR fortran/20885
3226         * interface.c (compare_actual_formal): Error for INTENT(OUT or INOUT)
3227         if actual argument is not a variable.
3228
3229 2006-01-28  Paul Thomas  <pault@gcc.gnu.org>
3230
3231         PR fortran/17911
3232         * expr.c (gfc_check_assign, gfc_check_pointer_assign): Emit error if
3233         the lvalue is a use associated procedure.
3234
3235         PR fortran/20895
3236         PR fortran/25030
3237         * expr.c (gfc_check_pointer_assign): Emit error if lvalue and rvalue
3238         character lengths are not the same.  Use gfc_dep_compare_expr for the
3239         comparison.
3240         * gfortran.h: Add prototype for gfc_dep_compare_expr.
3241         * dependency.h: Remove prototype for gfc_dep_compare_expr.
3242
3243 2006-01-27  Paul Thomas  <pault@gcc.gnu.org>
3244
3245         PR fortran/25964
3246         * resolve.c (resolve_function): Add GFC_ISYM_LOC to the list of
3247         generic_ids exempted from assumed size checking.
3248
3249 2006-01-27  Jakub Jelinek  <jakub@redhat.com>
3250
3251         PR fortran/25324
3252         * Make-lang.in (fortran/scanner.o): Depend on toplev.h.
3253         * lang.opt (fpreprocessed): New option.
3254         * scanner.c: Include toplev.h.
3255         (gfc_src_file, gfc_src_preprocessor_lines): New variables.
3256         (preprocessor_line): Unescape filename if there were any
3257         backslashes.
3258         (load_file): If initial and gfc_src_file is not NULL,
3259         use it rather than opening the file.  If gfc_src_preprocessor_lines
3260         has non-NULL elements, pass it to preprocessor_line.
3261         (unescape_filename, gfc_read_orig_filename): New functions.
3262         * gfortran.h (gfc_option_t): Add flag_preprocessed.
3263         (gfc_read_orig_filename): New prototype.
3264         * options.c (gfc_init_options): Clear flag_preprocessed.
3265         (gfc_post_options): If flag_preprocessed, call
3266         gfc_read_orig_filename.
3267         (gfc_handle_option): Handle OPT_fpreprocessed.
3268         * lang-specs.h: Pass -fpreprocessed to f951 if preprocessing
3269         sources.
3270
3271 2006-01-27  Erik Edelmann  <eedelman@gcc.gnu.org>
3272
3273         * symbol.c (free_old_symbol): Fix confusing comment, and add code
3274           to free old_symbol->formal.
3275
3276 2006-01-26  Paul Thomas  <pault@gcc.gnu.org>
3277
3278         PR fortran/25964
3279         * resolve.c (resolve_function): Exclude statement functions from
3280         global reference checking.
3281
3282         PR fortran/25084
3283         PR fortran/20852
3284         PR fortran/25085
3285         PR fortran/25086
3286         * resolve.c (resolve_function): Declare a gfc_symbol to replace the
3287         references through the symtree to the symbol associated with the
3288         function expresion. Give error on reference to an assumed character
3289         length function is defined in an interface or an external function
3290         that is not a dummy argument.
3291         (resolve_symbol): Give error if an assumed character length function
3292         is array-valued, pointer-valued, pure or recursive. Emit warning
3293         that character(*) value functions are obsolescent in F95.
3294
3295         PR fortran/25416
3296         * trans-expr.c (gfc_conv_function_call): The above patch to resolve.c
3297         prevents any assumed character length function call from getting here
3298         except intrinsics such as SPREAD. In this case, ensure that no
3299         segfault occurs from referencing non-existent charlen->length->
3300         expr_type and provide a backend_decl for the charlen from the charlen
3301         of the first actual argument.
3302
3303         Cure temp name confusion.
3304         * trans-expr.c (gfc_get_interface_mapping_array): Change name of
3305         temporary from "parm" to "ifm" to avoid clash with temp coming from
3306         trans-array.c.
3307
3308 2006-01-25  Erik Edelmann  <eedelman@gcc.gnu.org>
3309
3310         PR fortran/25716
3311         * symbol.c (free_old_symbol): New function.
3312         (gfc_commit_symbols): Use it.
3313         (gfc_commit_symbol): New function.
3314         (gfc_use_derived): Use it.
3315         * gfortran.h: Add prototype for gfc_commit_symbol.
3316         * intrinsic.c (gfc_find_function): Search in 'conversion'
3317         if not found in 'functions'.
3318         (gfc_convert_type_warn): Add a symtree to the new
3319         expression node, and commit the new symtree->n.sym.
3320         * resolve.c (gfc_resolve_index): Make sure typespec is
3321         properly initialized.
3322
3323 2006-01-23  Paul Thomas  <pault@gcc.gnu.org>
3324
3325         PR fortran/25901
3326         * decl.c (get_proc_name): Replace subroutine and function attributes
3327         in "already defined" test by the formal arglist pointer being non-NULL.
3328
3329         Fix regression in testing of admissability of attributes.
3330         * symbol.c (gfc_add_attribute): If the current_attr has non-zero
3331         intent, do not do the check for a dummy being used.
3332         * decl.c (attr_decl1): Add current_attr.intent as the third argument
3333         in the call to gfc_add_attribute.
3334         * gfortran.h: Add the third argument to the prototype for
3335         gfc_add_attribute.
3336
3337 2006-01-21  Joseph S. Myers  <joseph@codesourcery.com>
3338
3339         * gfortranspec.c (lang_specific_driver): Update copyright notice
3340         date.
3341
3342 2006-01-21  Paul Thomas  <pault@gcc.gnu.org>
3343
3344         PR fortran/25124
3345         PR fortran/25625
3346         * decl.c (get_proc_name): If there is an existing
3347         symbol in the encompassing namespace, call errors
3348         if it is a procedure of the same name or the kind
3349         field is set, indicating a type declaration.
3350
3351         PR fortran/20881
3352         PR fortran/23308
3353         PR fortran/25538
3354         PR fortran/25710
3355         * decl.c (add_global_entry): New function to check
3356         for existing global symbol with this name and to
3357         create new one if none exists.
3358         (gfc_match_entry): Call add_global_entry before
3359         matching argument lists for subroutine and function
3360         entries.
3361         * gfortran.h: Prototype for existing function,
3362         global_used.
3363         * resolve.c (resolve_global_procedure): New function
3364         to check global symbols for procedures.
3365         (resolve_call, resolve_function): Calls to this
3366         new function for non-contained and non-module
3367         procedures.
3368         * match.c (match_common): Add check for existing
3369         global symbol, creat one if none exists and emit
3370         error if there is a clash.
3371         * parse.c (global_used): Remove static and use the
3372         gsymbol name rather than the new_block name, so that
3373         the function can be called from resolve.c.
3374         (parse_block_data, parse_module, add_global_procedure):
3375         Improve checks for existing gsymbols.  Emit error if
3376         already defined or if references were to another type.
3377         Set defined flag.
3378
3379         PR fortran/PR24276
3380         * trans-expr.c (gfc_conv_aliased_arg): New function called by 
3381         gfc_conv_function_call that coverts an expression for an aliased
3382         component reference to a derived type array into a temporary array
3383         of the same type as the component.  The temporary is passed as an
3384         actual argument for the procedure call and is copied back to the
3385         derived type after the call.
3386         (is_aliased_array): New function that detects an array reference
3387         that is followed by a component reference.
3388         (gfc_conv_function_call): Detect an aliased actual argument with
3389         is_aliased_array and convert it to a temporary and back again
3390         using gfc_conv_aliased_arg.
3391
3392 2006-01-19  Tobias Schl\81üter  <tobias.schlueter@physik.uni-muenchen.de>
3393
3394         * gfortranspec.c: Update copyright years.
3395         * trans.c: Likewise.
3396         * trans-array.c: Likewise.
3397         * trans-array.h: Likewise.
3398         * trans-decl.c: Likewise.
3399         * trans-stmt.c: Likewise.
3400         * trans-stmt.h: Likewise.
3401         * trans-types.c: Likewise.
3402
3403 2006-01-18  Tobias Schl\81üter  <tobias.schlueter@physik.uni-muenchen.de>
3404
3405         PR fortran/18540
3406         PR fortran/18937
3407         * gfortran.h (BBT_HEADER): Move definition up.
3408         (gfc_st_label): Add BBT_HEADER, remove 'prev' and 'next'.
3409         * io.c (format_asterisk): Adapt initializer.
3410         * resolve.c (resolve_branch): Allow FORTRAN 66 cross-block GOTOs
3411         as extension.
3412         (warn_unused_label): Take gfc_st_label label as argument, adapt to
3413         new data structure.
3414         (gfc_resolve): Adapt call to warn_unused_label.
3415         * symbol.c (compare_st_labels): New function.
3416         (gfc_free_st_label, free_st_labels, gfc_get_st_label): Convert to
3417         using balanced binary tree.
3418         * decl.c (match_char_length, gfc_match_old_kind_spec): Do away
3419         with 'cnt'.
3420         (warn_unused_label): Adapt to binary tree.
3421         * match.c (gfc_match_small_literal_int): Only set cnt if non-NULL.
3422         * primary.c (match_kind_param): Do away with cnt.
3423
3424 2006-01-18  Paul Thomas  <pault@gcc.gnu.org>
3425
3426         PR fortran/20869
3427         PR fortran/20875
3428         PR fortran/25024
3429         * symbol.c (check_conflict): Add pointer valued elemental
3430         functions and internal procedures with the external attribute
3431         to the list of conflicts.
3432         (gfc_add_attribute): New catch-all function to perform the
3433         checking of symbol attributes for attribute declaration
3434         statements.
3435         * decl.c (attr_decl1): Call gfc_add_attribute for each of -
3436         (gfc_match_external, gfc_match_intent, gfc_match_intrinsic,
3437         gfc_match_pointer, gfc_match_dimension, gfc_match_target):
3438         Remove spurious calls to checks in symbol.c.  Set the
3439         attribute directly and use the call to attr_decl() for
3440         checking.
3441         * gfortran.h:  Add prototype for gfc_add_attribute.
3442
3443         PR fortran/25785
3444         * resolve.c (resolve_function): Exclude PRESENT from assumed size
3445         argument checking. Replace strcmp's with comparisons with generic
3446         codes.
3447
3448 2006-01-16  Rafael \81Ávila de Esp\81índola  <rafael.espindola@gmail.com>
3449
3450         * gfortranspec.c (lang_specific_spec_functions): Remove.
3451
3452 2006-01-16  Richard Guenther  <rguenther@suse.de>
3453
3454         * trans-stmt.c (gfc_trans_if_1): Use fold_buildN and build_int_cst.
3455         (gfc_trans_arithmetic_if): Likewise.
3456         (gfc_trans_simple_do): Likewise.
3457         (gfc_trans_do): Likewise.
3458         (gfc_trans_do_while): Likewise.
3459         (gfc_trans_logical_select): Likewise.
3460         (gfc_trans_forall_loop): Likewise.
3461         (generate_loop_for_temp_to_lhs): Likewise.
3462         (generate_loop_for_rhs_to_temp): Likewise.
3463         (gfc_trans_allocate): Likewise.
3464         * trans.c (gfc_add_expr_to_block): Do not fold expr again.
3465
3466 2006-01-16  Richard Guenther  <rguenther@suse.de>
3467
3468         * trans-expr.c (gfc_conv_function_call): Use fold_build2.
3469         * trans-stmt.c (gfc_trans_goto): Likewise.  Use build_int_cst.
3470         * trans.c (gfc_trans_runtime_check): Don't fold the condition
3471         again.
3472
3473 2006-01-13  Steven G. Kargl  <kargls@comcast.net>
3474
3475         PR fortran/25756
3476         * symbol.c (gfc_free_st_label): Give variable meaningful name. Remove
3477         unneeded parenthesis. Fix-up the head of the list (2 lines gleaned
3478         from g95).
3479
3480 2006-01-13  Diego Novillo  <dnovillo@redhat.com>
3481
3482         * trans.c (gfc_add_expr_to_block): Do not fold tcc_statement
3483         nodes.
3484
3485 2006-01-11  Tobias Schl\81üter  <tobias.schlueter@physik.uni-muenchen.de>
3486
3487         * parse.c (next_fixed): Remove superfluous string concatenation.
3488
3489 2006-01-11  Bernhard Fischer  <rep.nop@aon.at>
3490
3491         PR fortran/25486
3492         * scanner.c (load_line): use maxlen to determine the line-length used
3493         for padding lines in fixed form.
3494
3495 2006-01-11  Paul Thomas  <pault@gcc.gnu.org>
3496
3497         PR fortran/25730
3498         * trans-types.c (copy_dt_decls_ifequal): Copy backend decl for
3499         character lengths.
3500
3501 2006-01-09  Andrew Pinski  <pinskia@physics.uc.edu>
3502
3503         fortran/24936
3504         * trans-stmt.c (gfc_trans_pointer_assign_need_temp): Use fold_convert
3505         to avoid type mismatch.
3506
3507 2006-01-09  Andrew Pinski  <pinskia@physics.uc.edu>
3508
3509         PR fortran/21977
3510         * trans-decl.c (gfc_generate_function_code): Move the NULLing of
3511         current_fake_result_decl down to below generate_local_vars.
3512
3513 2006-01-09  Feng Wang  <fengwang@nudt.edu.cn>
3514
3515         PR fortran/12456
3516         * trans-expr.c (gfc_to_single_character): New function that converts
3517         string to single character if its length is 1.
3518         (gfc_build_compare_string):New function that compare string and handle
3519         single character specially.
3520         (gfc_conv_expr_op): Use gfc_build_compare_string.
3521         (gfc_trans_string_copy): Use gfc_to_single_character.
3522         * trans-intrinsic.c (gfc_conv_intrinsic_strcmp): Use
3523         gfc_build_compare_string.
3524         * trans.h (gfc_build_compare_string): Add prototype.
3525
3526 2006-01-09  Feng Wang  <fengwang@nudt.edu.cn>
3527
3528         * simplify.c (gfc_simplify_char): Use UCHAR_MAX instead of literal
3529         constant.
3530         (gfc_simplify_ichar): Get the result from unsinged char and in the
3531         range 0 to UCHAR_MAX instead of CHAR_MIN to CHAR_MAX.
3532
3533 2006-01-08  Erik Edelmann  <eedelman@gcc.gnu.org>
3534
3535         PR fortran/25093
3536         * resolve.c (resolve_fntype): Check that PUBLIC functions
3537         aren't of PRIVATE type.
3538
3539 2006-01-07  Tobias Schl"uter  <tobias.schlueter@physik.uni-muenchen.de>
3540
3541         * decl.c (gfc_match_function_decl): Correctly error out in case of
3542         omitted function argument list.
3543
3544 2006-01-07  Paul Thomas  <pault@gcc.gnu.org>
3545
3546         PR fortran/22146
3547         * trans-array.c (gfc_reverse_ss): Remove static attribute.
3548         (gfc_walk_elemental_function_args): Replace gfc_expr * argument for
3549         the function call with the corresponding gfc_actual_arglist*.  Change
3550         code accordingly.
3551         (gfc_walk_function_expr): Call to gfc_walk_elemental_function_args
3552         now requires the actual argument list instead of the expression for
3553         the function call.
3554         * trans-array.h: Modify the prototype for gfc_walk_elemental_function_args
3555         and provide a prototype for gfc_reverse_ss.
3556         * trans-stmt.h (gfc_trans_call): Add the scalarization code for the case
3557         where an elemental subroutine has array valued actual arguments.
3558
3559         PR fortran/25029
3560         PR fortran/21256
3561         PR fortran/20868
3562         PR fortran/20870
3563         * resolve.c (check_assumed_size_reference): New function to check for upper
3564         bound in assumed size array references.
3565         (resolve_assumed_size_actual): New function to do a very restricted scan
3566         of actual argument expressions of those procedures for which incomplete
3567         assumed size array references are not allowed.
3568         (resolve_function, resolve_call): Switch off assumed size checking of
3569         actual arguments, except for elemental procedures and intrinsic
3570         inquiry functions, in some circumstances.
3571         (resolve_variable): Call check_assumed_size_reference.
3572
3573 2006-01-05  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
3574
3575         PR fortran/24268
3576         * io.c (next_char_not_space): New function that returns the next
3577         character that is not white space.
3578         (format_lex): Use the new function to skip whitespace within
3579         a format string.
3580
3581 2006-01-05  Erik Edelmann  <eedelman@gcc.gnu.org>
3582
3583         PR fortran/23675
3584         * expr.c (gfc_expr_set_symbols_referenced): New function.
3585         * gfortran.h: Add a function prototype for it.
3586         * resolve.c (resolve_function): Use it for
3587         use associated character functions lengths.
3588         * expr.c, gfortran.h, resolve.c: Updated copyright years.
3589
3590 2006-01-03  Steven G. Kargl  <kargls@comcast.net>
3591
3592         PR fortran/25101
3593         * resolve.c (resolve_forall_iterators):  Check for scalar variables;
3594         Check stride is nonzero.
3595
3596 2006-01-02  Steven G. Kargl  <kargls@comcast.net>
3597
3598         PR fortran/24640
3599         * parse.c (next_free): Check for whitespace after the label.
3600         * match.c (gfc_match_small_literal_int): Initialize cnt variable.
3601
3602 2006-01-01  Steven G. Kargl  <kargls@comcast.net>
3603
3604         * ChangeLog: Split previous years into ...
3605         * ChangeLog-2002: here.
3606         * ChangeLog-2003: here.
3607         * ChangeLog-2004: here.
3608         * ChangeLog-2005: here.