OSDN Git Service

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