OSDN Git Service

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