OSDN Git Service

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