OSDN Git Service

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