OSDN Git Service

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