OSDN Git Service

2009-05-08 Janus Weil <janus@gcc.gnu.org>
[pf3gnuchains/gcc-fork.git] / gcc / fortran / ChangeLog
1 2009-05-08  Janus Weil  <janus@gcc.gnu.org>
2
3         PR fortran/39876
4         * intrinsic.c (gfc_is_intrinsic): Do not add the EXTERNAL attribute if
5         the symbol is a module procedure.
6
7 2009-05-08  Tobias Burnus  <burnus@net-b.de>
8
9         * invoke.texi: Add do/recursion to the -fcheck= summary.
10
11 2009-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
12
13         PR fortran/38830
14         * gfortran.texi: Document that we don't support variable FORMAT
15         expressions.
16
17 2009-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
18
19         PR fortran/39576
20         * error.c (error_print): Add missing break statement.
21
22 2009-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
23
24         PR fortran/36382
25         * invoke.texi: Document that -fdollar-ok does not allow $ to be
26         used in IMPLICIT statement.
27
28 2009-05-06  Janus Weil  <janus@gcc.gnu.org>
29             Paul Thomas  <pault@gcc.gnu.org>
30
31         PR fortran/39630
32         * decl.c (match_procedure_interface): New function to match the
33         interface for a PROCEDURE statement.
34         (match_procedure_decl): Call match_procedure_interface.
35         (match_ppc_decl): New function to match the declaration of a
36         procedure pointer component.
37         (gfc_match_procedure):  Call match_ppc_decl.
38         (match_binding_attributes): Add new argument 'ppc' and handle the
39         POINTER attribute for procedure pointer components.
40         (match_procedure_in_type,gfc_match_generic): Added new argument to
41         match_binding_attributes.
42         * dump-parse-tree.c (show_expr,show_components,show_code_node): Handle
43         procedure pointer components.
44         * expr.c (free_expr0,gfc_copy_expr,gfc_simplify_expr): Handle EXPR_PPC.
45         (gfc_check_pointer_assign): Handle procedure pointer components, but no
46         full checking yet.
47         (is_proc_ptr_comp): New function to determine if an expression is a
48         procedure pointer component.
49         * gfortran.h (expr_t): Add EXPR_PPC.
50         (symbol_attribute): Add new member 'proc_pointer_comp'.
51         (gfc_component): Add new member 'formal'.
52         (gfc_exec_op): Add EXEC_CALL_PPC.
53         (gfc_get_default_type): Changed first argument.
54         (is_proc_ptr_comp): Add prototype.
55         (gfc_match_varspec): Add new argument.
56         * interface.c (compare_actual_formal): Handle procedure pointer
57         components.
58         * match.c (gfc_match_pointer_assignment,match_typebound_call): Handle
59         procedure pointer components.
60         * module.c (mio_expr): Handle EXPR_PPC.
61         * parse.c (parse_derived): Handle procedure pointer components.
62         * primary.c (gfc_match_varspec): Add new argument 'ppc_arg' and handle
63         procedure pointer components.
64         (gfc_variable_attr): Handle procedure pointer components.
65         (gfc_match_rvalue): Added new argument to gfc_match_varspec and changed
66         first argument of gfc_get_default_type.
67         (match_variable): Added new argument to gfc_match_varspec.
68         * resolve.c (resolve_entries,set_type,resolve_fl_parameter): Changed
69         first argument of gfc_get_default_type.
70         (resolve_structure_cons,resolve_actual_arglist): Handle procedure
71         pointer components.
72         (resolve_ppc_call): New function to resolve a call to a procedure
73         pointer component (subroutine).
74         (resolve_expr_ppc): New function to resolve a call to a procedure
75         pointer component (function).
76         (gfc_resolve_expr): Handle EXPR_PPC.
77         (resolve_code): Handle EXEC_CALL_PPC.
78         (resolve_fl_derived): Copy the interface for a procedure pointer
79         component.
80         (resolve_symbol): Fix overlong line.
81         * st.c (gfc_free_statement): Handle EXEC_CALL_PPC.
82         * symbol.c (gfc_get_default_type): Changed first argument.
83         (gfc_set_default_type): Changed first argument of gfc_get_default_type.
84         (gfc_add_component): Initialize ts.type to BT_UNKNOWN.
85         * trans.h (gfc_conv_function_call): Renamed.
86         * trans.c (gfc_trans_code): Handle EXEC_CALL_PPC.
87         * trans-expr.c (gfc_conv_component_ref): Ditto.
88         (gfc_conv_function_val): Rename to 'conv_function_val', add new
89         argument 'expr' and handle procedure pointer components.
90         (gfc_conv_operator_assign): Renamed gfc_conv_function_val.
91         (gfc_apply_interface_mapping_to_expr): Handle EXPR_PPC.
92         (gfc_conv_function_call): Rename to 'gfc_conv_procedure_call', add new
93         argument 'expr' and handle procedure pointer components.
94         (gfc_get_proc_ptr_comp): New function to get the backend decl for a
95         procedure pointer component.
96         (gfc_conv_function_expr): Renamed gfc_conv_function_call.
97         (gfc_conv_structure): Handle procedure pointer components.
98         * trans-intrinsic.c (gfc_conv_intrinsic_funcall,
99         conv_generic_with_optional_char_arg): Renamed gfc_conv_function_call.
100         * trans-stmt.h (gfc_get_proc_ptr_comp): Add prototype.
101         * trans-stmt.c (gfc_trans_call): Renamed gfc_conv_function_call.
102         * trans-types.h (gfc_get_ppc_type): Add prototype.
103         * trans-types.c (gfc_get_ppc_type): New function to build a tree node
104         for a procedure pointer component.
105         (gfc_get_derived_type): Handle procedure pointer components.
106
107 2009-05-06  Tobias Burnus  <burnus@net-b.de>
108
109         PR fortran/40041
110         * resolve.c (resolve_symbol): Print no warning for implicitly
111         typed intrinsic functions.
112
113 2009-05-05  Janus Weil  <janus@gcc.gnu.org>
114
115         PR fortran/39998
116         * expr.c (gfc_check_pointer_assign): Check for statement functions and
117         internal procedures in procedure pointer assignments.
118
119 2009-04-28  Janus Weil  <janus@gcc.gnu.org>
120
121         PR fortran/39946
122         * resolve.c (resolve_symbol): Correctly copy the interface of a
123         PROCEDURE statement if the interface involves a RESULT variable.
124
125 2009-04-28  Janus Weil  <janus@gcc.gnu.org>
126
127         PR fortran/39930
128         PR fortran/39931
129         * expr.c (gfc_check_pointer_assign): Correctly detect if the left hand
130         side is a pointer.
131         * parse.c (gfc_fixup_sibling_symbols): Don't check for ambiguity.
132
133 2009-04-28  Paul Thomas  <pault@gcc.gnu.org>
134
135         PR fortran/39879
136         * trans_expr.c (gfc_conv_procedure_call): Deep copy a derived
137         type parentheses argument if it is a variable with allocatable
138         components.
139
140 2009-04-27  Ian Lance Taylor  <iant@google.com>
141
142         * trans-intrinsic.c (DEFINE_MATH_BUILTIN): Add casts to enum
143         type.
144         * trans-io.c (st_parameter_field): Add casts to enum type.
145
146 2009-04-26  Steven G. Kargl  <kargl@gcc.gnu.org>
147
148         PR fortran/39893
149         fortran/data.c (gfc_assign_data_value): If the lvalue is an 
150         assumed character length entity in a data statement, then 
151         return FAILURE to prevent segmentation fault.
152
153 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
154
155         * trans-decl.c: Include pointer-set.h.
156         (nonlocal_dummy_decl_pset, tree nonlocal_dummy_decls): New variables.
157         (gfc_nonlocal_dummy_array_decl): New function.
158         (gfc_get_symbol_decl): Call it for non-local dummy args with saved
159         descriptor.
160         (gfc_get_symbol_decl): Set DECL_BY_REFERENCE when needed.
161         (gfc_generate_function_code): Initialize nonlocal_dummy_decl{s,_pset},
162         chain it to outermost block's vars, destroy it afterwards.
163         * Make-lang.in (trans-decl.o): Depend on pointer-set.h.
164
165 2009-04-25  Janus Weil  <janus@gcc.gnu.org>
166
167         PR fortran/39688
168         * decl.c (gfc_match_import): Use 'sym->name' instead of 'name'.
169         They differ if the symbol has been use-renamed.
170
171 2009-04-24  Ian Lance Taylor  <iant@google.com>
172
173         * gfortran.h (enum gfc_symbol_type): New named enum type, broken
174         out of struct gfc_symbol.
175         (struct gfc_symbol): Use enum gfc_symbol_type.
176         (enum gfc_array_ref_dimen_type): New named enum type, broken out
177         of struct gfc_array_ref).
178         (struct gfc_array_ref): Use enum gfc_array_ref_dimen_type.
179         (mod_pointee_as): Update declaration.
180         * decl.c (add_global_entry): Change type to enum gfc_symbol_type.
181         (gfc_mod_pointee_as): Change return type to "match".
182         * module.c (mio_array_ref): Add cast to enum type.
183         (mio_symbol): Likewise.
184         * resolve.c (resolve_global_procedure): Change type to enum
185         gfc_symbol_type.
186         * trans-io.c (gfc_build_st_parameter): Change type to unsigned
187         int.
188
189 2009-04-24  Daniel Kraft  <d@domob.eu>
190
191         * gfortran.h (gfc_get_typebound_proc): Removed as macro, now a function.
192         (struct gfc_symtree): Moved `typebound' member inside union.
193         (struct gfc_namespace): Add `tb_sym_root' as new symtree to sort out
194         type-bound procedures there.
195         (gfc_get_tbp_symtree): New procedure.
196         * symbol.c (tentative_tbp_list): New global.
197         (gfc_get_namespace): NULL new `tb_sym_root' member.
198         (gfc_new_symtree): Removed initialization of `typebound' member.
199         (gfc_undo_symbols): Process list of tentative tbp's.
200         (gfc_commit_symbols): Ditto.
201         (free_tb_tree): New method.
202         (gfc_free_namespace): Call it.
203         (gfc_get_typebound_proc): New method.
204         (gfc_get_tbp_symtree): New method.
205         (gfc_find_typebound_proc): Adapt to structural changes of gfc_symtree
206         and gfc_namespace with regards to tbp's.
207         * dump-parse-tree.c (show_typebound): Ditto.
208         * primary.c (gfc_match_varspec): Ditto.  Don't reference tbp-symbol
209         as it isn't a symbol any longer.
210         * module.c (mio_typebound_symtree): Adapt to changes.
211         (mio_typebound_proc): Ditto, create symtrees using `gfc_get_tbp_symtree'
212         rather than `gfc_get_sym_tree'.
213         (mio_f2k_derived): Ditto.
214         * decl.c (match_procedure_in_type): Ditto.
215         (gfc_match_generic): Ditto.  Don't reference tbp-symbol.
216         * resolve.c (check_typebound_override): Adapt to changes.
217         (resolve_typebound_generic): Ditto.
218         (resolve_typebound_procedures): Ditto.
219         (ensure_not_abstract_walker): Ditto.
220         (ensure_not_abstract): Ditto.
221         (resolve_typebound_procedure): Ditto, ignore erraneous symbols (for
222         instance, through removed tentative ones).
223         * gfc-internals.texi (Type-bound procedures): Document changes.
224
225 2009-04-24  Janus Weil  <janus@gcc.gnu.org>
226
227         PR fortran/39861
228         PR fortran/39864
229         * symbol.c (gfc_copy_formal_args_intr): Set attr.flavor and attr.dummy
230         for the formal arguments.
231
232 2009-04-21  Taras Glek <tglek@mozilla.com>
233
234         * f95-lang.c: Update GTY annotations to new syntax.
235         * trans-intrinsic.c: Likewise.
236         * trans-io.c: Likewise.
237         * trans.h: Likewise.
238
239 2009-04-22  Janus Weil  <janus@gcc.gnu.org>
240
241         PR fortran/39735
242         * decl.c (add_hidden_procptr_result): Bugfix for procptr results.
243         (match_procedure_decl): Set if_source.
244         * expr.c (gfc_check_pointer_assign): Bugfix: Return after error.
245         And: Check interface also for IFSRC_UNKNOWN (return type may be known).
246         * gfortran.h (typedef enum ifsrc): Remove IFSRC_USAGE,
247         add documentation. Rename copy_formal_args and copy_formal_args_intr.
248         * interface.c (gfc_compare_interfaces): Check for return types,
249         handle IFSRC_UNKNOWN.
250         (compare_intr_interfaces,compare_actual_formal_intr): Obsolete, removed.
251         (gfc_procedure_use): Modified handling of intrinsics.
252         * intrinsic.c (add_functions): Bugfix for "dim".
253         * resolve.c (resolve_intrinsic): New function to resolve intrinsics,
254         which copies the interface from isym to sym.
255         (resolve_procedure_expression,resolve_function): Use new function
256         'resolve_intrinsic'.
257         (resolve_symbol): Add function attribute for externals with return type
258         and use new function 'resolve_intrinsic'.
259         * symbol.c (ifsrc_types): Remove string for IFSRC_USAGE.
260         (copy_formal_args): Renamed to gfc_copy_formal_args.
261         (copy_formal_args_intr): Renamed to gfc_copy_formal_args_intr.
262         * trans-const.c (gfc_conv_const_charlen): Handle cl==NULL.
263
264 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
265
266         * ChangeLog, ChangeLog-2002, ChangeLog-2003, ChangeLog-2004,
267         ChangeLog-2005, ChangeLog-2006, ChangeLog-2007, ChangeLog-2008,
268         ChangeLog.ptr, config-lang.in, ioparm.def, mathbuiltins.def: Add
269         copyright and license notices.
270         * ChangeLog, ChangeLog-2005, ChangeLog-2006, ChangeLog-2007,
271         ChangeLog-2008: Correct dates.
272
273 2009-04-20  Tobias Burnus  <burnus@net-b.de>
274
275         PR fortran/39811
276         * scanner.c (load_line): Fix bogus "&" compile-time diagnostic.
277
278 2009-04-20  Paul Thomas  <pault@gcc.gnu.org>
279
280         PR fortran/39800
281         * resolve.c (is_sym_host_assoc): New function.
282         (resolve_fl_derived): Call it when checking PRIVATE components
283         of PUBLIC derived types.  Change gfc_error to a gfc_notify_std
284         with std=f2003.
285         (resolve_fl_namelist): Call it twice to check for host
286         association.
287
288 2009-04-20  Ian Lance Taylor  <iant@google.com>
289
290         * module.c (import_iso_c_binding_module): Add casts to enum type.
291         * trans-intrinsic.c (gfc_conv_intrinsic_minmax): Change op to enum
292         tree_code.
293         (gfc_conv_intrinsic_anyall): Likewise.
294         (gfc_conv_intrinsic_arith): Likewise.
295         (gfc_conv_intrinsic_minmaxloc): Likewise.
296         (gfc_conv_intrinsic_minmaxval): Likewise.
297         (gfc_conv_intrinsic_bitop): Likewise.
298         (gfc_conv_intrinsic_singlebitop): Likewise.
299         (gfc_conv_intrinsic_strcmp): Likewise.
300
301 2009-04-20  Vasilis Liaskovitis  <vliaskov@gmail.com>
302             Jakub Jelinek  <jakub@redhat.com>
303
304         PR fortran/35423
305         * trans.h (OMPWS_WORKSHARE_FLAG, OMPWS_CURR_SINGLEUNIT,
306         OMPWS_SCALARIZER_WS, OMPWS_NOWAIT): Define.
307         (ompws_flags): New extern decl.
308         * trans-array.c (gfc_trans_scalarized_loop_end): Build OMP_FOR
309         for the outer dimension if ompws_flags allow it.
310         * trans.c (gfc_generate_code): Clear ompws_flags.
311         * trans-expr.c (gfc_trans_assignment_1): Allow worksharing
312         array assignments inside of !$omp workshare.
313         * trans-stmt.c (gfc_trans_where_3): Similarly for where statements
314         and constructs.
315         * trans-openmp.c (ompws_flags): New variable.
316         (gfc_trans_omp_workshare): Rewritten.
317
318 2009-04-11  Daniel Kraft  <d@domob.eu>
319
320         PR fortran/37746
321         * gfortran.h (struct gfc_charlen): New field `passed_length' to store
322         the actual passed string length for dummy arguments.
323         * trans-decl.c (gfc_create_string_length): Formatting fixes and added
324         assertion, moved a local variable into the innermost block it is needed.
325         (create_function_arglist): Removed TODO about the check being
326         implemented and initialize cl->passed_length here.
327         (add_argument_checking): New method.
328         (gfc_generate_function_code): Call the argument checking method.
329
330 2009-04-11  Janus Weil  <janus@gcc.gnu.org>
331
332         PR fortran/39692
333         * symbol.c (check_conflict): Reject procedure pointers for -std=f95.
334
335 2009-04-11  Daniel Franke  <franke.daniel@gmail.com>
336
337         * resolve.c (resolve_global_procedure): Enable whole-file checking for
338         procedures that are declared later in the file.
339         
340 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
341
342         PR middle-end/39701
343         * trans.c (gfc_allocate_with_status): Fix type mismatches
344         on "pstat == 0".
345
346 2009-04-10  Daniel Franke  <franke.daniel@gmail.com>
347
348         PR fortran/38709
349         * expr.c (find_array_section): Leave early on zero-sized arrays.
350
351 2009-04-09  Janus Weil  <janus@gcc.gnu.org>
352
353         PR fortran/36704
354         * decl.c (add_hidden_procptr_result): New function for handling
355         procedure pointer return values by adding a hidden result variable.
356         (variable_decl,match_procedure_decl,gfc_match_function_decl,
357         gfc_match_subroutine,gfc_match_end,attr_decl1): Handle procedure pointer
358         return values.
359         * parse.c (parse_interface): Add EXTERNAL attribute only after
360         FUNCTION/SUBROUTINE declaration is complete.
361         * primary.c (replace_hidden_procptr_result): New function for replacing
362         function symbol by hidden result variable.
363         (gfc_match_rvalue,match_variable): Replace symbol by hidden result
364         variable.
365         * resolve.c (resolve_contained_fntype,resolve_function,resolve_variable,
366         resolve_symbol): Allow for procedure pointer function results.
367         (resolve_fl_procedure): Conflict detection moved here from
368         'check_conflict'.
369         * symbol.c (gfc_check_function_type): Allow for procedure pointer
370         function results.
371         (check_conflict): Move some conflict detection to resolution stage.
372         * trans-types.c (gfc_sym_type,gfc_get_function_type): Handle hidden
373         result variables.
374
375 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
376
377         * trans-types.c (gfc_init_types): Ensure gfc_integer_types doesn't
378         contain TYPE_STRING_FLAG types.
379
380 2009-04-08  Janne Blomqvist  <jb@gcc.gnu.org>
381
382         PR fortran/39670
383         * invoke.texi (fdollar-ok): Fix typo.
384         
385 2009-04-08  Daniel Franke  <franke.daniel@gmail.com>
386
387         PR fortran/39670
388         * invoke.texi (fdollar-ok): Clarify limitations.
389
390 2009-04-08  Paul Thomas  <pault@gcc.gnu.org>
391
392         PR fortran/38863
393         * trans-array.c (gfc_trans_deferred_array): Return if this
394         is a result variable.
395
396 2009-04-07  Janus Weil  <janus@gcc.gnu.org>
397
398         PR fortran/38152
399         * trans-decl.c (gfc_get_symbol_decl): Correctly set decl location for
400         procedure pointer decls.
401
402 2009-04-07  Janus Weil  <janus@gcc.gnu.org>
403
404         PR fortran/38290
405         * expr.c (gfc_check_pointer_assign): Enable interface check for
406         procedure pointers.
407         * gfortran.h: Add copy_formal_args_intr.
408         * interface.c (gfc_compare_interfaces): Call gfc_compare_intr_interfaces
409         if second argument is an intrinsic.
410         (compare_intr_interfaces): Correctly set attr.function, attr.subroutine
411         and ts.
412         (compare_parameter): Call gfc_compare_interfaces also for intrinsics.
413         * resolve.c (resolve_specific_f0,resolve_specific_s0): Don't resolve
414         intrinsic interfaces here. Must happen earlier.
415         (resolve_symbol): Resolution of intrinsic interfaces moved here from
416         resolve_specific_..., and formal args are now copied from intrinsic
417         interfaces.
418         * symbol.c (copy_formal_args_intr): New function to copy the formal
419         arguments from an intinsic procedure.
420
421 2009-04-06  Paul Thomas  <pault@gcc.gnu.org>
422
423         PR fortran/38863
424         * dependency.c (ref_same_as_full_array): New function.
425         (gfc_dep_resolver): Call it.
426
427 2009-04-06  Janus Weil  <janus@gcc.gnu.org>
428
429        PR fortran/39414
430        * decl.c (match_procedure_decl): Fix double declaration problems with
431        PROCEDURE statements.
432        * symbol.c (gfc_add_type): Ditto.
433
434 2009-04-06  Paul Thomas  <pault@gcc.gnu.org>
435
436         PR fortran/36091
437         * trans-array.c (gfc_conv_array_ref): If the symbol has the
438         temporary attribute use the array_spec for the bounds.
439         * gfortran.h : Add the temporary field to the structure
440         'symbol_attribute'.
441         * trans-stmt.c (forall_make_variable_temp): Set the symbol's
442         temporary attribute.
443
444 2009-04-05  Daniel Franke  <franke.daniel@gmail.com>
445
446         PR fortran/29458
447         * trans-array.c (gfc_trans_array_constructor_value): Shadow
448         implied do-loop variable to avoid spurious middle-end warnings.
449
450 2009-04-04  Tobias Burnus  <burnus@net-b.de>
451
452         PR fortran/39577
453         * trans-decl.c (gfc_generate_function_code): Move recursive
454         check to the right position.
455
456 2009-04-04  Paul Thomas  <pault@gcc.gnu.org>
457
458         PR fortran/37614
459         * trans-common.c (translate_common): Do not offset the whole
460         coomon block.
461
462 2009-04-03  Tobias Burnus  <burnus@net-b.de>
463
464         PR fortran/39594
465         * resolve.c (resolve_common_vars): Add FL_VARIABLE to symbol
466         if it is not a procedure pointer.
467         * primary.c (match_actual_arg): Ditto.
468
469 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
470
471         PR preprocessor/15638
472         * cpp.c (cb_cpp_error): Handle CPP_DL_FATAL.
473
474 2009-03-30  Steven G. Kargl  <kargls@comcast.net>
475
476         PR fortran/38389
477         * trans-stmt.c(gfc_trans_allocate): Add translation of ERRMSG.
478         (gfc_trans_deallocate): Add translation of ERRMSG.  Remove stale
479         comments.  Minor whitespace cleanup.
480         * resolve.c(is_scalar_expr_ptr): Whitespace cleanup.
481         (resolve_deallocate_expr (gfc_expr *e): Update error message.
482         (resolve_allocate_expr):  Remove dead code.  Update error message.
483         Move error checking to ...
484         (resolve_allocate_deallocate): ... here.  Add additional error
485         checking for STAT, ERRMSG, and allocate-objects.
486         * match.c(gfc_match_allocate,gfc_match_deallocate):  Parse ERRMSG.
487         Check for redundant uses of STAT and ERRMSG.  Reword error message
488         and add checking for pointer, allocatable, and proc_pointer attributes.
489
490 2009-03-30  Paul Thomas  <pault@gcc.gnu.org>
491
492         PR fortran/22571
493         PR fortran/26227
494         PR fortran/24886
495         * symbol.c : Add gfc_global_ns_list.
496         * decl.c (add_global_entry): Set the namespace ('ns') field.
497         * gfortran.h : Add the resolved field to gfc_namespace. Add the
498         namespace ('ns') field to gfc_gsymbol.  Add flag_whole_file to
499         gfc_option_t.  Add the prototype for gfc_free_dt_list.
500         * lang.opt : Add the whole-file option.
501         * invoke.texi : Document the whole-file option.
502         * resolve.c (resolve_global_procedure): If the fwhole-file
503         option is set, reorder gsymbols to ensure that translation is
504         in the right order.  Resolve the gsymbol's namespace if that
505         has not occurred and then check interfaces.
506         (resolve_function): Move call to resolve_global_procedure.
507         (resolve_call): The same.
508         (resolve_codes): Store the current labels_obstack.
509         (gfc_resolve) : Return if the namespace is already resolved.
510         trans-decl.c (gfc_get_extern_function_decl): If the whole_file
511         option is selected, use the backend_decl of a gsymbol, if it is
512         available.
513         parse.c (add_global_procedure, add_global_program): If the flag
514         whole-file is set, add the namespace to the gsymbol.
515         (gfc_parse_file): On -fwhole-file, put procedure namespaces on
516         the global namespace list.  Rearrange to do resolution of all
517         the procedures in a file, followed by their translation.
518         * options.c (gfc_init_options): Add -fwhole-file.
519         (gfc_handle_option): The same.
520
521 2009-03-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
522
523         * f95-lang.c (gfc_init_builtin_functions): Define BUILT_IN_HUGE_VAL
524         family of intrinsics instead of BUILT_IN_INF family.
525         * trans-intrinsics.c (gfc_conv_intrinsic_nearest): Use
526         BUILT_IN_HUGE_VAL instead of BUILT_IN_INF.
527
528 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
529
530         * trans-types.c (gfc_sym_type, gfc_return_by_reference): For
531         sym->attr.result check sym->ns->proc_name->attr.is_bind_c.
532
533 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
534
535         PR rtl-optimization/323
536         * options.c (gfc_post_options): Set
537         flag_excess_precision_cmdline.  Give an error for
538         -fexcess-precision=standard for processors where the option is
539         significant.
540
541 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
542
543         PR preprocessor/34695
544         * cpp.c (cb_cpp_error): New.
545         (gfc_cpp_post_options): Don't set cpp_option->inhibit_warnings.
546         Don't check cpp_errors (cpp_in).
547         (gfc_cpp_init_0): Set cb->error.
548
549 2009-03-29  Steven G. Kargl  <kargl@gcc.gnu.org>
550
551         PR fortran/38823
552         * gfortran.h: Add ARITH_PROHIBIT to arith enum.
553         expr.c (gfc_match_init_expr): Add global variable init_flag to
554         flag matching an initialization expression.
555         (check_intrinsic_op): Move no longer reachable error message to ...
556         * arith.c (arith_power): ... here.  Remove gfc_ prefix in
557         gfc_arith_power.  Use init_flag.  Allow constant folding of x**y
558         when y is REAL or COMPLEX.
559         (eval_intrinsic): Remove restriction that y in x**y must be INTEGER
560         for constant folding.
561         * gfc_power: Update gfc_arith_power to arith_power
562
563 2009-03-29  Daniel Kraft  <d@domob.eu>
564
565         PR fortran/37423
566         * gfortran.h (struct gfc_typebound_proc): Added new flag `deferred' and
567         added a comment explaining DEFERRED binding handling.
568         * decl.c (match_binding_attributes): Really match DEFERRED attribute.
569         (match_procedure_in_type): Really match PROCEDURE(interface) syntax
570         and do some validity checks for DEFERRED and this construct.
571         * module.c (binding_overriding): New string constant for DEFERRED.
572         (mio_typebound_proc): Module-IO DEFERRED flag.
573         * resolve.c (check_typebound_override): Ensure that a non-DEFERRED
574         binding is not overridden by a DEFERRED one.
575         (resolve_typebound_procedure): Allow abstract interfaces as targets
576         for DEFERRED bindings.
577         (ensure_not_abstract_walker), (ensure_not_abstract): New methods.
578         (resolve_fl_derived): Use new `ensure_not_abstract' method for
579         non-ABSTRACT types extending ABSTRACT ones to ensure each DEFERRED
580         binding is overridden.
581         (check_typebound_baseobject): New method.
582         (resolve_compcall), (resolve_typebound_call): Check base-object of
583         the type-bound procedure call.
584         * gfc-internals.texi (Type-bound procedures): Document a little bit
585         about internal handling of DEFERRED bindings.
586
587 2009-03-29  Tobias Schlüter  <tobi@gcc.gnu.org>
588
589         PR fortran/38507
590         * gfortran.h (gfc_st_label): Fix comment.
591         (gfc_exec_op): Add statement code EXEC_END_BLOCK for end of block.
592         * parse.c (accept_statement): Use EXEC_END_BLOCK for END IF and
593         END SELECT with labels.
594         (check_do_closure): Fix formatting.
595         (parse_do_block): Fix typo in error message.
596         * resolve.c (code_stack): Remove tail member.  Update comment to
597         new use of reachable_labels.
598         (reachable_labels): Rename to ...
599         (find_reachable_labels): ... this.  Overhaul.  Update preceding
600         comment.
601         (resolve_branch): Fix comment preceding function.  Rewrite.
602         (resolve_code): Update call to find_reachable_labels.  Add code to
603         deal with EXEC_END_BLOCK.
604         * st.c (gfc_free_statement): Add code to deal with EXEC_END_BLOCK.
605         Add 2009 to copyright years.
606         * trans.c (gfc_trans_code): Likewise on both counts.
607
608 2009-03-31  Paul Thomas  <pault@gcc.gnu.org>
609
610         PR fortran/38917
611         * expr.c (gfc_check_assign): Allow pointer components when
612         checking for NULL.
613
614         PR fortran/38918
615         * resolve.c (check_data_variable): Treat pointer arrays with
616         scalars.
617
618 2009-03-31  Paul Thomas  <pault@gcc.gnu.org>
619
620         PR fortran/38915
621         * trans-expr.c (gfc_trans_assignment_1): Ensure temporaries
622         have a string_length.
623
624 2009-03-28  Tobias Burnus  <burnus@net-b.de>
625
626         PR fortran/34656
627         * trans-stmt.c (gfc_trans_simple_do, gfc_trans_do):
628         Add GFC_RTCHECK_DO support.
629         * option.c (gfc_handle_runtime_check_option): Enable GFC_RTCHECK_DO.
630         * invoke.texi (-fcheck): Document "do" option.
631
632 2009-03-28  Paul Thomas  <pault@gcc.gnu.org>
633
634         PR fortran/38538
635         * trans-array.c (get_elemental_fcn_charlen): Remove.
636         (get_array_charlen): New function to replace previous.
637
638 2009-03-28  Paul Thomas  <pault@gcc.gnu.org>
639
640         PR fortran/38765
641         * parse.c (parse_derived): Do not break on finding pointer,
642         allocatable or private components.
643
644 2009-03-28  Tobias Burnus  <burnus@net-b.de>
645
646         PR fortran/32626
647         * option.c (gfc_handle_runtime_check_option): Enable recursion check.
648         * trans-decl.c (gfc_generate_function_code): Add recursion check.
649         * invoke.texi (-fcheck): Add recursive option.
650
651 2009-03-28  Tobias Burnus  <burnus@net-b.de>
652
653         PR fortran/38432
654         * resolve.c (gfc_resolve_iterator): Add zero-loop warning.
655
656 2009-03-28  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
657             Paul Thomas  <pault@gcc.gnu.org>
658             Tobias Burnus  <burnus@net-b.de>
659
660         * gfortran.h (gfc_option_t): Add rtcheck.
661         * lang.opt: New option -fcheck.
662         * libgfortran.h: Add GFC_RTCHECK_* constants.
663         * invoke.texi: Document -fcheck.
664         * options.c (gfc_handle_runtime_check_option): New function.
665         (gfc_init_options,gfc_post_options,gfc_handle_option):
666         Add -fcheck option.
667
668 2009-03-27  Richard Guenther  <rguenther@suse.de>
669
670         * trans-array.c (gfc_conv_descriptor_data_addr): Use
671         gfc_build_addr_expr instead of build_fold_addr_expr.
672         (gfc_trans_allocate_array_storage, gfc_trans_array_constructor_value,
673         gfc_trans_constant_array_constructor, gfc_conv_array_data,
674         gfc_conv_expr_descriptor, gfc_conv_array_parameter): Likewise.
675         * trans-expr.c (gfc_conv_missing_dummy, gfc_conv_variable,
676         gfc_conv_function_val, gfc_conv_operator_assign,
677         gfc_conv_subref_array_arg, gfc_conv_function_call,
678         gfc_conv_expr_reference, gfc_trans_scalar_assign): Likewise.
679         * trans-intrinsic.c (gfc_conv_intrinsic_exponent,
680         gfc_conv_intrinsic_ctime, gfc_conv_intrinsic_fdate,
681         gfc_conv_intrinsic_ttynam, gfc_conv_intrinsic_minmax_char,
682         gfc_conv_intrinsic_fraction, gfc_conv_intrinsic_spacing,
683         gfc_conv_intrinsic_rrspacing, gfc_conv_intrinsic_set_exponent,
684         gfc_conv_intrinsic_array_transfer, gfc_conv_intrinsic_transfer,
685         gfc_conv_intrinsic_si_kind, gfc_conv_intrinsic_trim): Likewise.
686         * trans-io.c (gfc_trans_io_runtime_check, set_parameter_ref,
687         gfc_convert_array_to_string, gfc_trans_open, gfc_trans_close,
688         build_filepos, gfc_trans_inquire, gfc_trans_wait,
689         nml_get_addr_expr, transfer_namelist_element, build_dt,
690         gfc_trans_dt_end, transfer_array_component, transfer_expr,
691         transfer_array_desc, gfc_trans_transfer): Likewise.
692         * trans-stmt.c (gfc_trans_allocate, gfc_trans_deallocate): Likewise.
693         * trans.c (gfc_build_addr_expr): Mark the base of the address
694         TREE_ADDRESSABLE.
695
696 2009-03-27  Tobias Burnus  <burnus@net-b.de>
697
698         * gfortran.h (enum init_local_real.): Add GFC_INIT_REAL_SNAN.
699         (gfc_expr): Add is_snan.
700         * trans-const.c (gfc_conv_mpfr_to_tree): Support SNaN.
701         (gfc_conv_constant_to_tree): Update call to gfc_conv_mpfr_to_tree.
702         * trans-const.h (gfc_conv_mpfr_to_tree): Update prototype.
703         * resolve.c (build_default_init_expr): Update call.
704         * target-memory.c (encode_float): Ditto.
705         * trans-intrinsic.c (gfc_conv_intrinsic_aint,gfc_conv_intrinsic_mod,
706
707 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
708
709         * lang.opt: Unify help texts for -I, -Wconversion, -d, -fopenmp,
710         and -fpreprocessed.
711
712 2009-03-06  Alexandre Oliva <aoliva@redhat.com>
713
714         * simplify.c (gfc_simplify_transfer): Zero-initialize the
715         buffer.
716
717 2009-02-27  Tobias Burnus  <burnus@net-b.de>
718
719         PR fortran/39309
720         * module.c (read_md5_from_module_file): Add missing quote.
721
722 2009-02-27  Tobias Burnus  <burnus@net-b.de>
723
724         PR fortran/39309
725         * module.c (read_md5_from_module_file): Include mod version
726         in had-changed test.
727
728 2009-02-26  Paul Thomas  <pault@gcc.gnu.org>
729
730         PR fortran/39295
731         * interface.c (compare_type_rank_if): Return 1 if the symbols
732         are the same and deal with external procedures where one is
733         identified to be a function or subroutine by usage but the
734         other is not.
735
736 2009-02-26  Paul Thomas  <pault@gcc.gnu.org>
737
738         PR fortran/39292
739         * trans-array.c (gfc_conv_array_initializer): Convert all
740         expressions rather than ICEing.
741
742 2009-02-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
743
744         PR fortran/38914
745         * array.c (ref_dimen_size):  Rename to gfc_ref_dimen_size,
746         make global.  Change function name in error messages.
747         (ref_size):  Change ref_dimen_size to gfc_ref_dimen_size.
748         (gfc_array_ref_shape):  Likewise.
749         * gfortran.h:  Add prototype for gfc_ref_dimen_size.
750         * simplify.c (simplify_bound_dim):  Add ref argument.
751         If the reference isn't a full array, return one for
752         the lower bound and the extent for the upper bound.
753         (simplify_bound):  For array sections, take as from the
754         argument.  Add reference to all to simplify_bound_dim.
755
756 2009-02-19  Daniel Franke  <franke.daniel@gmail.com>
757
758         * scanner.c (load_line): At end of line, skip '\r' without setting
759         the truncation flag.
760
761 2009-02-18  Daniel Kraft  <d@domob.eu>
762
763         * gfortran.texi: New chapter about compiler characteristics.
764         (Compiler Characteristics): Document KIND type parameters here.
765
766 2009-02-18  Tobias Burnus  <burnus@net-b.de>
767
768         * intrinsic.texi (MALLOC): Make example more portable.
769
770 2009-02-13  Mikael Morin  <mikael.morin@tele2.fr>
771
772         PR fortran/38259
773         * module.c (gfc_dump_module,gfc_use_module): Add module
774         version number.
775
776 2009-02-13  Paul Thomas  <pault@gcc.gnu.org>
777
778         PR fortran/36703
779         PR fortran/36528
780         * trans-expr.c (gfc_conv_function_val): Stabilize Cray-pointer
781         function references to ensure that a valid expression is used.
782         (gfc_conv_function_call): Pass Cray pointers to procedures.
783
784 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
785
786         * gfortranspec.c (lang_specific_driver): Update copyright notice
787         dates.
788
789 2009-01-28  Paul Thomas  <pault@gcc.gnu.org>
790
791         PR fortran/38852
792         PR fortran/39006
793         * trans-intrinsic.c (gfc_conv_intrinsic_bound): Use the array
794         descriptor ubound for UBOUND, when the array lbound == 1.
795
796 2009-01-27  Daniel Kraft  <d@domob.eu>
797
798         PR fortran/38883
799         * trans-stmt.c (gfc_conv_elemental_dependencies):  Create temporary
800         for the real type needed to make it work for subcomponent-references.
801
802 2009-01-21  Daniel Kraft  <d@domob.eu>
803
804         * trans-stmt.c (gfc_conv_elemental_dependencies):  Cleaned up comment.
805
806 2009-01-20  Paul Thomas  <pault@gcc.gnu.org>
807
808         PR fortran/38907
809         * resolve.c (check_host_association): Remove the matching to
810         correct an incorrect host association and use manipulation of
811         the expression instead.
812
813 2009-01-20  Tobias Burnus  <burnus@net-b.de>
814
815         * invoke.texi (RANGE): RANGE also takes INTEGER arguments.
816
817 2009-01-19  Mikael Morin  <mikael.morin@tele2.fr>
818
819         PR fortran/38859
820         * simplify.c (simplify_bound): Don't use array specification
821         if variable or component has subsequent references.
822
823 2009-01-17  Paul Thomas  <pault@gcc.gnu.org>
824
825         PR fortran/38657
826         * module.c (write_common_0): Add argument 'this_module' and
827         check that non-use associated common blocks are written first.
828         (write_common): Call write_common_0 twice, once with true and
829         then with false.
830
831 2009-01-17  Paul Thomas  <pault@gcc.gnu.org>
832
833         PR fortran/34955
834         * trans-intrinsic.c (gfc_conv_intrinsic_array_transfer): Has
835         been absorbed into gfc_conv_intrinsic_transfer. All
836         references to it in trans-intrinsic.c have been changed
837         accordingly.  PR fixed by using a temporary for scalar
838         character transfer, when the source is shorter than the
839         destination.
840
841 2009-01-17  Paul Thomas  <pault@gcc.gnu.org>
842
843         PR fortran/38657
844         * module.c (write_common_0): Revert patch of 2009-01-05.
845
846 2009-01-16  Janus Weil  <janus@gcc.gnu.org>
847
848         PR fortran/38152
849         * expr.c (gfc_check_pointer_assign): Allow use-associated procedure
850         pointers as lvalue.
851         * trans-decl.c (get_proc_pointer_decl,gfc_create_module_variable):
852         Enable procedure pointers as module variables.
853
854 2009-01-14  Steven G. Kargl  <kargl@gcc.gnu.org>
855
856         * ChangeLog-2007: Clean out svn merge droppings.
857
858 2009-01-10  Paul Thomas  <pault@gcc.gnu.org>
859
860         PR fortran/38763
861         * target-memory.c (encode_derived): Encode NULL.
862
863 2009-01-10  Paul Thomas  <pault@gcc.gnu.org>
864
865         PR fortran/38765
866         * resolve.c (check_host_association): Use the symtree name to
867         search for a potential contained procedure, since this is the
868         name by which it would be referenced.
869
870 2009-01-06  Thomas Koenig  <tkoenig@gcc.gnu.org>
871
872         PR fortran/38220
873         * interface.c (gfc_procedure_use):  Don't warn about functions
874         from ISO_C_BINDING.
875         * symbol.c (generate_isocbinding_symbol):  Mark c_loc and
876         c_funloc as pure.
877
878 2009-01-05  Paul Thomas  <pault@gcc.gnu.org>
879
880         PR fortran/38657
881         * module.c (write_common_0): Use the name of the symtree rather
882         than the common block, to determine if the common has been
883         written.
884
885 2009-01-05  Daniel Franke  <franke.daniel@gmail.com>
886
887         PR fortran/37159
888         * check.c (gfc_check_random_seed): Added size check for GET
889         dummy argument, reworded error messages to follow common pattern.
890
891 2009-01-05  Thomas Koenig  <tkoenig@gcc.gnu.org>
892
893         PR fortran/38672
894         * trans-types.c (gfc_get_derived_type):  Check for the
895         presence of derived->ns->proc_name before
896         accessing derived->ns->proc_name->attr.flavor .
897         * resolve.c (resolve_symbol):  Likewise.
898
899 2009-01-05  Paul Thomas  <pault@gcc.gnu.org>
900
901         PR fortran/38665
902         * gfortran.h : Add bit to gfc_expr 'user_operator'
903         * interface.c (gfc_extend_expr): Set the above if the operator
904         is substituted by a function. 
905         * resolve.c (check_host_association): Return if above is set.
906
907 2009-01-04  Mikael Morin  <mikael.morin@tele2.fr>
908
909         PR fortran/35681
910         * ChangeLog-2008: Fix function name.
911
912         PR fortran/38487
913         * dependency.c (gfc_check_argument_var_dependency):
914         Move the check for pointerness inside the if block
915         so that it doesn't affect the return value.
916
917         PR fortran/38669
918         * trans-stmt.c (gfc_trans_call):
919         Add the dependency code after the loop bounds calculation one.
920
921 2009-01-04  Daniel Franke  <franke.daniel@gmail.com>
922
923         * intrinsic.c (do_simplify): Removed already implemented TODO.
924
925 2009-01-04  Daniel Franke  <franke.daniel@gmail.com>
926
927         PR fortran/38718
928         * simplify.c (gfc_simplify_merge): New.
929         * intrinsic.h (gfc_simplify_merge): New prototype.
930         * intrinsic.c (add_functions): Added simplification for MERGE.
931
932 2009-01-04  Mikael Morin  <mikael.morin@tele2.fr>
933
934         PR fortran/38536
935         * gfortran.h (gfc_is_data_pointer): Added prototype
936         * resolve.c (gfc_iso_c_func_interface):
937         Use gfc_is_data_pointer to test for pointer attribute.
938         * dependency.c (gfc_is_data_pointer):
939         Support pointer-returning functions.
940
941 2009-01-03  Daniel Franke  <franke.daniel@gmail.com>
942
943         * symbol.c (save_symbol): Don't SAVE function results.
944
945 2009-01-03  Paul Thomas  <pault@gcc.gnu.org>
946
947         PR fortran/38594
948         * resolve.c (resolve_call): When searching for proper host
949         association, use symtree rather than symbol.  For everything
950         except generic subroutines, substitute the symtree in the call
951         rather than the symbol.
952
953 \f
954 Copyright (C) 2009 Free Software Foundation, Inc.
955
956 Copying and distribution of this file, with or without modification,
957 are permitted in any medium without royalty provided the copyright
958 notice and this notice are preserved.