OSDN Git Service

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