OSDN Git Service

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