OSDN Git Service

* decl.c (record_builtin_java_type): Undo unintended change.
[pf3gnuchains/gcc-fork.git] / gcc / fortran / ChangeLog
1 2009-09-30  Dennis Wassel  <dennis.wassel@gmail.com>
2
3         * gcc/fortran/trans-array.c (gfc_trans_array_bound_check): Improved
4         bounds checking error messages. (gfc_conv_array_ref): Likewise.
5         (gfc_conv_ss_startstride): Likewise.
6
7 2009-09-30  Janus Weil  <janus@gcc.gnu.org>
8
9         * resolve.c (check_typebound_baseobject): Don't check for
10         abstract types for CLASS.
11         (resolve_class_assign): Adapt for RHS being a CLASS.
12         * trans-intrinsic.c (gfc_conv_associated): Add component ref
13         if expr is a CLASS.
14
15 2009-09-30  Janus Weil  <janus@gcc.gnu.org>
16
17         * check.c (gfc_check_same_type_as): New function for checking
18         SAME_TYPE_AS and EXTENDS_TYPE_OF.
19         * decl.c (encapsulate_class_symbol): Set ABSTRACT attribute for class
20         container, if the contained type has it. Add an initializer for the
21         class container.
22         (add_init_expr_to_sym): Handle BT_CLASS.
23         (vindex_counter): New counter for setting vindices.
24         (gfc_match_derived_decl): Set vindex for all derived types, not only
25         those which are being extended.
26         * expr.c (gfc_check_assign_symbol): Handle NULL initialization of class
27         pointers.
28         * gfortran.h (gfc_isym_id): New values GFC_ISYM_SAME_TYPE_AS and
29         GFC_ISYM_EXTENDS_TYPE_OF.
30         (gfc_type_is_extensible): New prototype.
31         * intrinsic.h (gfc_check_same_type_as): New prototype.
32         * intrinsic.c (add_functions): Add SAME_TYPE_AS and EXTENDS_TYPE_OF.
33         * primary.c (gfc_expr_attr): Handle CLASS-valued functions.
34         * resolve.c (resolve_structure_cons): Handle BT_CLASS.
35         (type_is_extensible): Make non-static and rename to
36         'gfc_type_is_extensible.
37         (resolve_select_type): Renamed type_is_extensible.
38         (resolve_class_assign): Handle NULL pointers.
39         (resolve_fl_variable_derived): Renamed type_is_extensible.
40         (resolve_fl_derived): Ditto.
41         * trans-expr.c (gfc_trans_subcomponent_assign): Handle NULL
42         initialization of class pointer components.
43         (gfc_conv_structure): Handle BT_CLASS.
44         * trans-intrinsic.c (gfc_conv_same_type_as,gfc_conv_extends_type_of):
45         New functions.
46         (gfc_conv_intrinsic_function): Handle SAME_TYPE_AS and EXTENDS_TYPE_OF.
47
48 2009-09-30  Janus Weil  <janus@gcc.gnu.org>
49
50         * gfortran.h (type_selector, select_type_tmp): New global variables.
51         * match.c (type_selector, select_type_tmp): New global variables,
52         used for SELECT TYPE statements.
53         (gfc_match_select_type): Better error handling. Remember selector.
54         (gfc_match_type_is): Create temporary variable.
55         * module.c (ab_attribute): New value 'AB_IS_CLASS'.
56         (attr_bits): New string.
57         (mio_symbol_attribute): Handle 'is_class'.
58         * resolve.c (resolve_select_type): Insert pointer assignment statement,
59         to assign temporary to selector.
60         * symbol.c (gfc_get_ha_sym_tree): Replace selector by a temporary
61         in SELECT TYPE statements.
62
63 2009-09-30  Janus Weil  <janus@gcc.gnu.org>
64
65         * dump-parse-tree.c (show_code_node): Renamed 'alloc_list'.
66         * gfortran.h (gfc_code): Rename 'alloc_list'. Add member 'ts'.
67         (gfc_expr_to_initialize): New prototype.
68         * match.c (alloc_opt_list): Correctly check type compatibility.
69         Renamed 'alloc_list'.
70         (dealloc_opt_list): Renamed 'alloc_list'.
71         * resolve.c (expr_to_initialize): Rename to 'gfc_expr_to_initialize'
72         and make it non-static.
73         (resolve_allocate_expr): Set vindex for CLASS variables correctly.
74         Move initialization code to gfc_trans_allocate. Renamed 'alloc_list'.
75         (resolve_allocate_deallocate): Renamed 'alloc_list'.
76         (check_class_pointer_assign): Rename to 'resolve_class_assign'. Change
77         argument type. Adjust to work with ordinary assignments.
78         (resolve_code): Call 'resolve_class_assign' for ordinary assignments.
79         Renamed 'check_class_pointer_assign'.
80         * st.c (gfc_free_statement): Renamed 'alloc_list'.
81         * trans-stmt.c (gfc_trans_allocate): Renamed 'alloc_list'. Handle
82         size determination and initialization of CLASS variables. Bugfix for
83         ALLOCATE statements with default initialization and SOURCE block.
84         (gfc_trans_deallocate): Renamed 'alloc_list'.
85
86 2009-09-30  Paul Thomas  <pault@gcc.gnu.org>
87
88         * trans-expr.c (gfc_conv_procedure_call): Convert a derived
89         type actual to a class object if the formal argument is a
90         class.
91
92 2009-09-30  Janus Weil  <janus@gcc.gnu.org>
93
94         PR fortran/40996
95         * decl.c (build_struct): Handle allocatable scalar components.
96         * expr.c (gfc_add_component_ref): Correctly set typespec of expression,
97         after inserting component reference.
98         * match.c (gfc_match_type_is,gfc_match_class_is): Make sure that no
99         variables are being used uninitialized.
100         * primary.c (gfc_match_varspec): Handle CLASS array components.
101         * resolve.c (resolve_select_type): Transform EXEC_SELECT_TYPE to
102         EXEC_SELECT.
103         * trans-array.c (structure_alloc_comps,gfc_trans_deferred_array):
104         Handle allocatable scalar components.
105         * trans-expr.c (gfc_conv_component_ref): Ditto.
106         * trans-types.c (gfc_get_derived_type): Ditto.
107
108 2009-09-30  Janus Weil  <janus@gcc.gnu.org>
109
110         * decl.c (encapsulate_class_symbol): Modify names of class container
111         components by prefixing with '$'.
112         (gfc_match_end): Handle COMP_SELECT_TYPE.
113         * expr.c (gfc_add_component_ref): Modify names of class container
114         components by prefixing with '$'.
115         * gfortran.h (gfc_statement): Add ST_SELECT_TYPE, ST_TYPE_IS and
116         ST_CLASS_IS.
117         (gfc_case): New field 'ts'.
118         (gfc_exec_op): Add EXEC_SELECT_TYPE.
119         (gfc_type_is_extension_of): New prototype.
120         * match.h (gfc_match_select_type,gfc_match_type_is,gfc_match_class_is):
121         New prototypes.
122         * match.c (match_derived_type_spec): New function.
123         (match_type_spec): Use 'match_derived_type_spec'.
124         (match_case_eos): Modify error message.
125         (gfc_match_select_type): New function.
126         (gfc_match_case): Modify error message.
127         (gfc_match_type_is): New function.
128         (gfc_match_class_is): Ditto.
129         * parse.h (gfc_compile_state): Add COMP_SELECT_TYPE.
130         * parse.c (decode_statement): Handle SELECT TYPE, TYPE IS and CLASS IS
131         statements.
132         (next_statement): Handle ST_SELECT_TYPE.
133         (gfc_ascii_statement): Handle ST_SELECT_TYPE, ST_TYPE_IS, ST_CLASS_IS.
134         (parse_select_type_block): New function.
135         (parse_executable): Handle ST_SELECT_TYPE.
136         * resolve.c (resolve_deallocate_expr): Handle BT_CLASS. Modify names of
137         class container components by prefixing with '$'.
138         (resolve_allocate_expr): Ditto.
139         (resolve_select_type): New function.
140         (gfc_resolve_blocks): Handle EXEC_SELECT_TYPE.
141         (check_class_pointer_assign): Modify names of class container
142         components by prefixing with '$'.
143         (resolve_code): Ditto.
144         * st.c (gfc_free_statement): Ditto.
145         * symbol.c (gfc_type_is_extension_of): New function.
146         (gfc_type_compatible): Use 'gfc_type_is_extension_of', plus a bugfix.
147         * trans.c (gfc_trans_code): Handel EXEC_SELECT_TYPE.
148
149 2009-09-30  Janus Weil  <janus@gcc.gnu.org>
150             Paul Thomas <pault@gcc.gnu.org> 
151
152         * check.c (gfc_check_move_alloc): Arguments don't have to be arrays.
153         The second argument needs to be type-compatible with the first (not the
154         other way around, which makes a difference for CLASS entities).
155         * decl.c (encapsulate_class_symbol): New function.
156         (build_sym,build_struct): Handle BT_CLASS, call
157         'encapsulate_class_symbol'.
158         (gfc_match_decl_type_spec): Remove warning, use BT_CLASS.
159         (gfc_match_derived_decl): Set vindex;
160         * expr.c (gfc_add_component_ref): New function.
161         (gfc_copy_expr,gfc_check_pointer_assign,gfc_check_assign_symbol):
162         Handle BT_CLASS.
163         * dump-parse-tree.c (show_symbol): Print vindex.
164         * gfortran.h (bt): New basic type BT_CLASS.
165         (symbol_attribute): New field 'is_class'.
166         (gfc_typespec): Remove field 'is_class'.
167         (gfc_symbol): New field 'vindex'.
168         (gfc_get_ultimate_derived_super_type): New prototype.
169         (gfc_add_component_ref): Ditto.
170         * interface.c (gfc_compare_derived_types): Pointer equality check
171         moved here from gfc_compare_types.
172         (gfc_compare_types): Handle BT_CLASS and use
173         gfc_type_compatible.
174         * match.c (gfc_match_allocate,gfc_match_deallocate,gfc_match_call):
175         Handle BT_CLASS.
176         * misc.c (gfc_clear_ts): Removed is_class.
177         (gfc_basic_typename,gfc_typename): Handle BT_CLASS.
178         * module.c (bt_types,mio_typespec): Handle BT_CLASS.
179         (mio_symbol): Handle vindex.
180         * primary.c (gfc_match_varspec,gfc_variable_attr): Handle BT_CLASS.
181         * resolve.c (find_array_spec,check_typebound_baseobject):
182         Handle BT_CLASS.
183         (resolve_ppc_call,resolve_expr_ppc): Don't call 'gfc_is_proc_ptr_comp'
184         inside 'gcc_assert'.
185         (resolve_deallocate_expr,resolve_allocate_expr): Handle BT_CLASS.
186         (check_class_pointer_assign): New function.
187         (resolve_code): Handle BT_CLASS, call check_class_pointer_assign.
188         (resolve_fl_var_and_proc,type_is_extensible,resolve_fl_variable_derived,
189         resolve_fl_variable): Handle BT_CLASS.
190         (check_generic_tbp_ambiguity): Add special case.
191         (resolve_typebound_procedure,resolve_fl_derived): Handle BT_CLASS.
192         * symbol.c (gfc_get_ultimate_derived_super_type): New function.
193         (gfc_type_compatible): Handle BT_CLASS.
194         * trans-expr.c (conv_parent_component_references): Handle CLASS
195         containers.
196         (gfc_conv_initializer): Handle BT_CLASS.
197         * trans-types.c (gfc_typenode_for_spec,gfc_get_derived_type):
198         Handle BT_CLASS.
199
200 2009-09-29  Daniel Kraft  <d@domob.eu>
201
202         PR fortran/39626
203         * gfortran.h (enum gfc_statement): Add ST_BLOCK and ST_END_BLOCK.
204         (struct gfc_namespace): Convert flags to bit-fields and add flag
205         `construct_entities' for use with BLOCK constructs.
206         (enum gfc_exec_code): Add EXEC_BLOCK.
207         (struct gfc_code): Add namespace field to union for EXEC_BLOCK.
208         * match.h (gfc_match_block): New prototype.
209         * parse.h (enum gfc_compile_state): Add COMP_BLOCK.
210         * trans.h (gfc_process_block_locals): New prototype.
211         (gfc_trans_deferred_vars): Made public, new prototype.
212         * trans-stmt.h (gfc_trans_block_construct): New prototype.
213         * decl.c (gfc_match_end): Handle END BLOCK correctly.
214         (gfc_match_intent): Error if inside of BLOCK.
215         (gfc_match_optional), (gfc_match_value): Ditto.
216         * match.c (gfc_match_block): New routine.
217         * parse.c (decode_statement): Handle BLOCK statement.
218         (case_exec_markers): Add ST_BLOCK.
219         (case_end): Add ST_END_BLOCK.
220         (gfc_ascii_statement): Handle ST_BLOCK and ST_END_BLOCK.
221         (parse_spec): Check for statements not allowed inside of BLOCK.
222         (parse_block_construct): New routine.
223         (parse_executable): Parse BLOCKs.
224         (parse_progunit): Disallow CONTAINS in BLOCK constructs.
225         * resolve.c (is_illegal_recursion): Find real container procedure and
226         don't get confused by BLOCK constructs.
227         (resolve_block_construct): New routine.
228         (gfc_resolve_blocks), (resolve_code): Handle EXEC_BLOCK.
229         * st.c (gfc_free_statement): Handle EXEC_BLOCK statements.
230         * trans-decl.c (saved_local_decls): New static variable.
231         (add_decl_as_local): New routine.
232         (gfc_finish_var_decl): Add variable as local if inside BLOCK.
233         (gfc_trans_deferred_vars): Make public.
234         (gfc_process_block_locals): New routine.
235         * trans-stmt.c (gfc_trans_block_construct): New routine.
236         * trans.c (gfc_trans_code): Handle EXEC_BLOCK statements.
237
238 2009-09-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
239
240         PR fortran/35862
241         * io.c (format_token): Add enumerators for rounding format specifiers.
242         (format_lex): Tokenize the rounding format specifiers.
243         (gfc_match_open): Enable rounding modes in OPEN statement.
244
245 2009-09-28  Richard Henderson  <rth@redhat.com>
246
247         * f95-lang.c (gfc_init_builtin_functions): Update call to
248         build_common_builtin_nodes.
249
250 2009-09-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
251
252         * simplify.c (gfc_simplify_acos, gfc_simplify_acosh,
253         gfc_simplify_asin, gfc_simplify_asinh, gfc_simplify_atan,
254         gfc_simplify_atanh): Fix error message.
255
256 2009-09-24  Steven G. Kargl  <kargl@gcc.gnu.org>
257
258         PR fortran/41459
259         * error.c(gfc_warning_now): Move warnings_are_errors test to 
260         after actual emitting of the warning.
261         * parse.c (next_free): Improve error locus printing.
262         (next_fixed): Change gfc_warn to gfc_warning_now, and improve
263         locus reporting.
264  
265
266 2009-09-16  Michael Matz  <matz@suse.de>
267
268         PR fortran/41212
269         * trans.h (struct lang_type): Remove nontarget_type member.
270         * trans.c (gfc_add_modify): Don't access it.
271         * trans-decl.c (gfc_finish_var_decl): Don't allocate and set it,
272         instead set DECL_RESTRICTED_P on affected decls.
273
274 2009-09-14  Richard Henderson  <rth@redhat.com>
275
276         * f95-lang.c (gfc_init_builtin_functions): Update call to
277         build_common_builtin_nodes.
278         (gfc_maybe_initialize_eh): Don't call
279         default_init_unwind_resume_libfunc.
280
281 2009-09-13  Richard Guenther  <rguenther@suse.de>
282         Rafael Avila de Espindola  <espindola@google.com>
283
284         * f95-lang.c (gfc_maybe_initialize_eh): Do not init
285         eh_personality_libfunc.
286
287 2009-09-11  Janus Weil  <janus@gcc.gnu.org>
288
289         PR fortran/41242
290         * resolve.c (resolve_ordinary_assign): Don't call resolve_code,
291         to avoid that subsequent codes are resolved more than once.
292         (resolve_code): Make sure that type-bound assignment operators are
293         resolved correctly.
294
295
296 2009-09-10  Steven G. Kargl  <kargl@gcc.gnu.org>
297
298         PR fortran/31292
299         * fortran/decl.c(gfc_match_modproc): Check that module procedures
300         from a module can USEd in module procedure statements in other
301         program units.  Update locus for better error message display.
302         Detect intrinsic procedures in module procedure statements.
303
304 2009-09-09  Richard Guenther  <rguenther@suse.de>
305
306         PR fortran/41297
307         * trans-expr.c (gfc_trans_scalar_assign): Correct typo that
308         left 'tmp' unused in derived type assignment.
309
310 2009-09-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
311
312         PR fortran/41197
313         * resolve_c (resolve_allocate_deallocate):  Complain
314         if stat or errmsg varaible is an array.
315
316 2009-09-05  Paul Thomas  <pault@gcc.gnu.org>
317
318         PR fortran/41258
319         * primary.c (gfc_match_varspec): Do not look for typebound
320         procedures unless the derived type has a f2k_derived namespace.
321
322 2009-09-03  Diego Novillo  <dnovillo@google.com>
323
324         * f95-lang.c (lang_hooks): Remove const qualifier.
325
326 2009-09-01  Richard Guenther  <rguenther@suse.de>
327
328         * f95-lang.c (gfc_mark_addressable): Remove.
329         (LANG_HOOKS_MARK_ADDRESSABLE): Likewise.
330
331 2009-08-31  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
332
333         PR fortran/39229
334         * scanner.c (next_char): Fix typo in comment.
335         (gfc_get_char_literal): Warn if truncate flag is set for both fixed and
336         free form source, adjusting error locus as needed.
337         * parse.c (next_fixed): Clear the truncate flag.
338         (next_statement): Remove truncate warning.
339
340 2009-08-31  Janus Weil  <janus@gcc.gnu.org>
341             Paul Thomas  <pault@gcc.gnu.org>
342
343         PR fortran/40940
344         * array.c (gfc_match_array_constructor): Rename gfc_match_type_spec.
345         * decl.c (gfc_match_type_spec): Rename to gfc_match_decl_type_spec,
346         and reject CLASS with -std=f95.
347         (gfc_match_implicit, gfc_match_data_decl,gfc_match_prefix,
348         match_procedure_interface): Rename gfc_match_type_spec.
349         * gfortran.h (gfc_type_compatible): Add prototype.
350         * match.h (gfc_match_type_spec): Rename to gfc_match_decl_type_spec.
351         * match.c (match_intrinsic_typespec): Rename to match_type_spec, and
352         add handling of derived types.
353         (gfc_match_allocate): Rename match_intrinsic_typespec and check
354         type compatibility of derived types.
355         * symbol.c (gfc_type_compatible): New function to check if two types
356         are compatible.
357
358 2009-08-31  Janus Weil  <janus@gcc.gnu.org>
359
360         PR fortran/40996
361         * check.c (gfc_check_allocated): Implement allocatable scalars.
362         * resolve.c (resolve_allocate_expr,resolve_fl_var_and_proc): Ditto.
363         * trans-intrinsic.c (gfc_conv_allocated): Ditto.
364
365 2009-08-30  Daniel Kraft  <d@domob.eu>
366
367         PR fortran/37425
368         * dump-parse-tree.c (show_typebound_proc): Renamed from `show_typebound'
369         and accept gfc_typebound_proc and name instead of the symtree, needed
370         for intrinsic operator output.
371         (show_typebound_symtree): New method calling `show_typebound_proc'.
372         (show_f2k_derived): Output type-bound operators also.
373         (show_symbol): Moved output of `Procedure bindings:' label to
374         `show_f2k_derived'.
375         * gfortran.texi (Fortran 2003 status): Mention support of
376         array-constructors with explicit type specification, type-bound
377         procedures/operators, type extension, ABSTRACT types and DEFERRED.
378         Link to Fortran 2003 wiki page.
379         (Fortran 2008 status): Fix typo.  Link to Fortran 2008 wiki page.
380         * gfc-internals.texi (Type-bound Procedures): Document the new
381         members/attributes of gfc_expr.value.compcall used for type-bound
382         operators.
383         (Type-bound Operators): New section documenting their internals.
384
385 2009-08-27  Janus Weil  <janus@gcc.gnu.org>
386
387         PR fortran/40869
388         * expr.c (gfc_check_pointer_assign): Enable interface check for
389         pointer assignments involving procedure pointer components.
390         * gfortran.h (gfc_compare_interfaces): Modified prototype.
391         * interface.c (gfc_compare_interfaces): Add argument 'name2', to be
392         used instead of s2->name. Don't rely on the proc_pointer attribute,
393         but instead on the flags handed to this function.
394         (check_interface1,compare_parameter): Add argument for
395         gfc_compare_interfaces.
396         * resolve.c (check_generic_tbp_ambiguity): Ditto.
397
398 2009-08-27  Daniel Kraft  <d@domob.eu>
399
400         PR fortran/37425
401         * gfortran.h (gfc_expr): Optionally store base-object in compcall value
402         and add a new flag to distinguish assign-calls generated.
403         (gfc_find_typebound_proc): Add locus argument.
404         (gfc_find_typebound_user_op), (gfc_find_typebound_intrinsic_op): Ditto.
405         (gfc_extend_expr): Return if failure was by a real error.
406         * interface.c (matching_typebound_op): New routine.
407         (build_compcall_for_operator): New routine.
408         (gfc_extend_expr): Handle type-bound operators, some clean-up and
409         return if failure was by a real error or just by not finding an
410         appropriate operator definition.
411         (gfc_extend_assign): Handle type-bound assignments.
412         * module.c (MOD_VERSION): Incremented.
413         (mio_intrinsic_op): New routine.
414         (mio_full_typebound_tree): New routine to make typebound-procedures IO
415         code reusable for type-bound user operators.
416         (mio_f2k_derived): IO of type-bound operators.
417         * primary.c (gfc_match_varspec): Initialize new fields in gfc_expr and
418         pass locus to gfc_find_typebound_proc.
419         * resolve.c (resolve_operator): Only output error about no matching
420         interface if gfc_extend_expr did not already fail with an error.
421         (extract_compcall_passed_object): Use specified base-object if present.
422         (update_compcall_arglist): Handle ignore_pass field.
423         (resolve_ordinary_assign): Update to handle extended code for
424         type-bound assignments, too.
425         (resolve_code): Handle EXEC_ASSIGN_CALL statement code.
426         (resolve_tb_generic_targets): Pass locus to gfc_find_typebound_proc.
427         (resolve_typebound_generic), (resolve_typebound_procedure): Ditto.
428         (resolve_typebound_intrinsic_op), (resolve_typebound_user_op): Ditto.
429         (ensure_not_abstract_walker), (resolve_fl_derived): Ditto.
430         (resolve_typebound_procedures): Remove not-implemented error.
431         (resolve_typebound_call): Handle assign-call flag.
432         * symbol.c (find_typebound_proc_uop): New argument to pass locus for
433         error message about PRIVATE, verify that a found procedure is not marked
434         as erraneous.
435         (gfc_find_typebound_intrinsic_op): Ditto.
436         (gfc_find_typebound_proc), (gfc_find_typebound_user_op): New locus arg.
437
438 2009-08-22  Bud Davis <bdavis9659@sbcglobal.net>
439
440         PR fortran/28093
441         * io.c: reverted previous patch.
442
443 2009-08-25  Janne Blomqvist  <jb@gcc.gnu.org>
444
445         * gfortran.texi: Fix ENCODE example.
446
447 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
448
449         PR fortran/41139
450         * primary.c (gfc_match_varspec): Make sure EXPR_PPC is only used for
451         calls to procedure pointer components, other references to procedure
452         pointer components are EXPR_VARIABLE.
453         * resolve.c (resolve_actual_arglist): Bugfix (there can be calls without
454         actual arglist).
455         * trans-expr.c (gfc_get_proc_ptr_comp): Renamed to 'get_proc_ptr_comp',
456         removed argument 'se' and made static. Avoid inserting a temporary
457         variable for calling the PPC.
458         (conv_function_val): Renamed gfc_get_proc_ptr_comp.
459         (gfc_conv_procedure_call): Distinguish functions returning a procedure
460         pointer from calls to a procedure pointer. Distinguish calls to
461         procedure pointer components from procedure pointer components as
462         actual arguments.
463         * trans-stmt.h (gfc_get_proc_ptr_comp): Make it static.
464
465 2009-08-24  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
466
467         PR fortran/41162
468         * io.c (check_format): Fix to not error on slash after P. Fix some
469         error loci.
470         
471 2009-08-24  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
472
473         PR fortran/41154
474         * io.c (check_format): Fix to not error on right paren after P.
475
476 2009-08-24  Aldy Hernandez  <aldyh@redhat.com>
477
478         PR fortran/40660
479         * trans-io.c (build_dt): Pass UNKNOWN_LOCATION to build_call_expr_loc.
480         (transfer_array_desc): Same.
481
482 2009-08-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
483
484         PR fortran/35754
485         * io.c (check_format): Add checks for comma and the allowed
486         format specifiers after the 'P' specifier. Fix typo in error message
487         and adjust locus.
488
489 2009-08-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
490
491         PR fortran/37446
492         * io.c (enum format_token): Change FMT_EXT to FMT_EN and FMT_ES.
493         (format_lex): Likewise.
494         (token_to_string): New function.
495         (check_format): Use the new tokens and the new function. Add
496         check for positive width.
497
498 2009-08-22  Steven G. Kargl  <kargl@gcc.gnu.org>
499
500         * fortran/decl.c: Disallow procedure pointers with -std=f95.
501
502 2009-08-22 Steven K. kargl  <kargl@gcc.gnu.org>
503            Paul Thomas  <pault@gcc.gnu.org>
504
505         * fortran/decl.c (match_char_spec): Rename to gfc_match_char_spec,
506         and remove static.
507         * fortran/gfortran.h: Add *expr3 entity to gfc_code.  Add prototype
508         for gfc_match_char_spec.
509         * fortran/trans-stmt.c (gfc_trans_allocate): Translate the SOURCE=
510         tag.
511         * fortran/match.c (match_intrinsic_typespec): New function to match
512         F2003 intrinsic-type-spec.
513         (conformable_arrays): New function. Check SOURCE= and
514         allocation-object are conformable.
515         (gfc_match_allocate): Use new functions.  Match SOURCE= tag.
516
517 2009-08-22  Bud Davis <bdavis9659@sbcglobal.net>
518
519         PR fortran/28093
520         * io.c : added variable to store original len of fmt
521         * io.c (check_format): Consume H items using next_char
522         in both modes to handle consecutive single quotes.
523         Test for extra characters in fmt, issue warning.
524
525 2009-08-21  Janus Weil  <janus@gcc.gnu.org>
526
527         PR fortran/41106
528         * primary.c (gfc_variable_attr): Make it work also on EXPR_FUNCTION.
529         (gfc_expr_attr): Use gfc_variable_attr for procedure pointer components.
530         * resolve.c (resolve_fl_derived): Handle CHARACTER-valued procedure
531         pointer components.
532         * trans-expr.c (gfc_conv_component_ref): Ditto.
533         (gfc_conv_variable): Ditto.
534         (gfc_conv_procedure_call): Ditto.
535         (gfc_trans_pointer_assignment): Ditto.
536         * trans-types.c (gfc_get_derived_type): Ditto.
537
538 2009-08-20  Tobias Schlüter  <tobi@gcc.gnu.org>
539
540         * trans-stmt.c (gfc_trans_do): Add a few missing folds.
541
542 2009-08-20  Michael Matz  <matz@suse.de>
543
544         PR fortran/41126
545         * trans-expr.c (gfc_conv_string_tmp): Check type compatibility
546         instead of equality.
547
548 2009-08-20  Janus Weil  <janus@gcc.gnu.org>
549
550         PR fortran/41121
551         * resolve.c (resolve_symbol): Don't resolve formal_ns of intrinsic
552         procedures.
553
554 2009-08-18  Michael Matz  <matz@suse.de>
555
556         * trans-expr.c (gfc_conv_substring): Don't evaluate casted decl early,
557         change order of length calculation to (end - start) + 1.
558         (gfc_get_interface_mapping_array): Adjust call to
559         gfc_get_nodesc_array_type.
560         * trans-array.c (gfc_trans_create_temp_array,
561         gfc_build_constant_array_constructor, gfc_conv_expr_descriptor): Ditto.
562         * trans-stmt.c (gfc_trans_pointer_assign_need_temp): Ditto.
563         * trans.c (gfc_add_modify): Assignment between base type and nontarget
564         type are equal enough.
565         (gfc_call_malloc): Use prvoid_type_node for return value of
566         __builtin_malloc.
567         (gfc_allocate_with_status): Ditto.
568         * trans-types.c (gfc_array_descriptor_base): Double size of this array.
569         (gfc_init_types): Build prvoid_type_node.
570         (gfc_build_array_type): New bool parameter "restricted".
571         (gfc_get_nodesc_array_type): Ditto, build restrict qualified pointers,
572         if it's true.
573         (gfc_get_array_descriptor_base): Ditto.
574         (gfc_get_array_type_bounds): Ditto.
575         (gfc_sym_type): Use symbol attributes to feed calls to above functions.
576         (gfc_get_derived_type): Ditto.
577         * trans.h (struct lang_type): Add nontarget_type member.
578         * trans-types.h (prvoid_type_node): Declare.
579         (gfc_get_array_type_bounds, gfc_get_nodesc_array_type): Declare new
580         parameter.
581         * trans-decl.c (gfc_finish_var_decl): Give scalars that can't be
582         aliased a type with a different alias set than the base type.
583         (gfc_build_dummy_array_decl): Adjust call to gfc_get_nodesc_array_type.
584
585 2009-08-18  Janus Weil  <janus@gcc.gnu.org>
586             Paul Thomas  <pault@gcc.gnu.org>
587
588         PR fortran/40870
589         * trans-types.c (gfc_get_ppc_type): Include formal args in backend_decl
590         using the interface symbol. Character types are returned by reference.
591         (gfc_get_derived_type): Prevent infinite recursion loop
592         if a PPC has a derived-type formal arg.
593
594 2008-08-17  Paul Thomas  <pault@gcc.gnu.org>
595
596         PR fortran/41062
597         * trans-decl.c (gfc_trans_use_stmts):  Keep going through use
598         list if symbol is not use associated.
599
600 2009-08-17  Daniel Kraft  <d@domob.eu>
601
602         PR fortran/37425
603         * resolve.c (get_checked_tb_operator_target): New routine to do checks
604         on type-bound operators in common between intrinsic and user operators.
605         (resolve_typebound_intrinsic_op): Call it.
606         (resolve_typebound_user_op): Ditto.
607
608 2009-08-17  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
609
610         PR fortran/41075
611         * scanner.c (gfc_next_char_literal): Add comment to improve 
612         readability.
613         * io.c (enum format_token): Add FMT_STAR. (format_lex): Add case
614         for '*'. (check_format): Check for left paren after '*'.  Change
615         format checks to use %L to improve format string error locus.
616
617 2009-08-17  Janus Weil  <janus@gcc.gnu.org>
618
619         PR fortran/40877
620         * array.c (gfc_resolve_character_array_constructor): Add NULL argument
621         to gfc_new_charlen.
622         * decl.c (add_init_expr_to_sym,variable_decl,match_char_spec,
623         gfc_match_implicit): Ditto.
624         * expr.c (simplify_const_ref): Fix memory leak.
625         (gfc_simplify_expr): Add NULL argument to gfc_new_charlen.
626         * gfortran.h (gfc_new_charlen): Modified prototype.
627         * iresolve.c (check_charlen_present,gfc_resolve_char_achar): Add NULL
628         argument to gfc_new_charlen.
629         * module.c (mio_charlen): Ditto.
630         * resolve.c (gfc_resolve_substring_charlen,
631         gfc_resolve_character_operator,fixup_charlen): Ditto.
632         (resolve_fl_derived,resolve_symbol): Add argument to gfc_charlen.
633         * symbol.c (gfc_new_charlen): Add argument 'old_cl' (to make a copy of
634         an existing charlen).
635         (gfc_set_default_type,generate_isocbinding_symbol): Fix memory leak.
636         (gfc_copy_formal_args_intr): Add NULL argument to gfc_new_charlen.
637         * trans-decl.c (create_function_arglist): Fix memory leak.
638
639 2009-08-17  Richard Guenther  <rguenther@suse.de>
640
641         * trans-expr.c (gfc_trans_scalar_assign): Replace hack with
642         more proper hack.
643
644 2009-08-15  Tobias Burnus  <burnus@net-b.de>
645
646         PR fortran/41080
647         * gfortranspec.c (lookup_option): Remove gfortran-specific
648         version of -dumpversion.
649
650 2009-08-14  Janus Weil  <janus@gcc.gnu.org>
651
652         PR fortran/41070
653         * resolve.c (resolve_structure_cons): Make sure that ts.u.derived is
654         only used if type is BT_DERIVED.
655
656 2009-08-13  Janus Weil  <janus@gcc.gnu.org>
657
658         PR fortran/40941
659         * gfortran.h (gfc_typespec): Put 'derived' and 'cl' into union.
660         * decl.c (build_struct): Make sure 'cl' is only used
661         if type is BT_CHARACTER.
662         * symbol.c (gfc_set_default_type): Ditto.
663         * resolve.c (resolve_symbol, resolve_fl_derived): Ditto.
664         (resolve_equivalence,resolve_equivalence_derived): Make sure 'derived'
665         is only used if type is BT_DERIVED.
666         * trans-io.c (transfer_expr): Make sure 'derived' is only used if type
667         is BT_DERIVED or BT_INTEGER (special case: C_PTR/C_FUNPTR).
668         * array.c: Mechanical replacements to accomodate union in gfc_typespec.
669         * check.c: Ditto.
670         * data.c: Ditto.
671         * decl.c: Ditto.
672         * dump-parse-tree.c: Ditto.
673         * expr.c: Ditto.
674         * interface.c: Ditto.
675         * iresolve.c: Ditto.
676         * match.c: Ditto.
677         * misc.c: Ditto.
678         * module.c: Ditto.
679         * openmp.c: Ditto.
680         * parse.c: Ditto.
681         * primary.c: Ditto.
682         * resolve.c: Ditto.
683         * simplify.c: Ditto.
684         * symbol.c: Ditto.
685         * target-memory.c: Ditto.
686         * trans-array.c: Ditto.
687         * trans-common.c: Ditto.
688         * trans-const.c: Ditto.
689         * trans-decl.c: Ditto.
690         * trans-expr.c: Ditto.
691         * trans-intrinsic.c: Ditto.
692         * trans-io.c: Ditto.
693         * trans-stmt.c: Ditto.
694         * trans-types.c: Ditto.
695
696 2009-08-13  Janus Weil  <janus@gcc.gnu.org>
697
698         PR fortran/40995
699         * resolve.c (resolve_symbol): Move some checking code to
700         resolve_intrinsic, and call this from here.
701         (resolve_intrinsic): Some checking code moved here from resolve_symbol.
702         Make sure each intrinsic is only resolved once.
703
704 2009-08-12  Tobias Burnus  <burnus@net-b.de>
705
706         PR fortran/41034
707         * symbol.c (gfc_copy_attr): Merge bits instead of replace
708         bits in gfc_copy_attr.
709         * gfc_check_pointer_assign (gfc_check_pointer_assign):
710         Initialize ext_attr bits by zero.
711
712 2009-08-11  Richard Guenther  <rguenther@suse.de>
713
714         * trans-types.c (gfc_get_derived_type): Do not clear TYPE_CANONICAL.
715
716 2009-08-11  Janus Weil  <janus@gcc.gnu.org>
717
718         PR fortran/41022
719         * trans-expr.c (gfc_conv_procedure_call): Handle procedure pointer
720         components as actual arguments.
721
722 2009-08-10  Daniel Kraft  <d@domob.eu>
723
724         PR fortran/37425
725         * gfortran.h (struct gfc_namespace): New fields tb_uop_root and tb_op.
726         (gfc_find_typebound_user_op): New routine.
727         (gfc_find_typebound_intrinsic_op): Ditto.
728         (gfc_check_operator_interface): Now public routine.
729         * decl.c (gfc_match_generic): Match OPERATOR(X) or ASSIGNMENT(=).
730         * interface.c (check_operator_interface): Made public, renamed to
731         `gfc_check_operator_interface' accordingly and hand in the interface
732         as gfc_symbol rather than gfc_interface so it is useful for type-bound
733         operators, too.  Return boolean result.
734         (gfc_check_interfaces): Adapt call to `check_operator_interface'.
735         * symbol.c (gfc_get_namespace): Initialize new field `tb_op'.
736         (gfc_free_namespace): Free `tb_uop_root'-based tree.
737         (find_typebound_proc_uop): New helper function.
738         (gfc_find_typebound_proc): Use it.
739         (gfc_find_typebound_user_op): New method.
740         (gfc_find_typebound_intrinsic_op): Ditto.
741         * resolve.c (resolve_tb_generic_targets): New helper function.
742         (resolve_typebound_generic): Use it.
743         (resolve_typebound_intrinsic_op), (resolve_typebound_user_op): New.
744         (resolve_typebound_procedures): Resolve operators, too.
745         (check_uop_procedure): New, code from gfc_resolve_uops.
746         (gfc_resolve_uops): Moved main code to new `check_uop_procedure'.
747
748 2009-08-10  Janus Weil  <janus@gcc.gnu.org>
749
750         PR fortran/40940
751         * decl.c (gfc_match_type_spec): Match CLASS statement and warn about
752         missing polymorphism.
753         * gfortran.h (gfc_typespec): Add field 'is_class'.
754         * misc.c (gfc_clear_ts): Initialize 'is_class' to zero.
755         * resolve.c (type_is_extensible): New function to check if a derived
756         type is extensible.
757         (resolve_fl_variable_derived): Add error checks for CLASS variables.
758         (resolve_typebound_procedure): Disallow non-polymorphic passed-object
759         dummy arguments, turning warning into error.
760         (resolve_fl_derived): Use 'type_is_extensible'. Disallow non-polymorphic
761         passed-object dummy arguments for procedure pointer components,
762         turning warning into error. Add error check for CLASS components.
763
764 2009-08-05  Tobias Burnus  <burnus@net-b.de>
765
766         PR fortran/40955
767         * gfortran.h (ext_attr_id_t): Add typedef for this enum.
768         (gfc_add_ext_attribute): Use it.
769         * decl.c (gfc_match_gcc_attributes): Ditto.
770         * expr.c (gfc_check_pointer_assign): Ditto.
771         * symbol.c (gfc_add_ext_attribute): Ditto.
772         (gfc_copy_attr): Copy also ext_attr.
773         * resolve.c (resolve_fl_derived,resolve_symbol): Ditto.
774         * module.c (mio_symbol_attribute): Save ext_attr in the mod file.
775
776 2009-08-05  Tobias Burnus  <burnus@net-b.de>
777
778         PR fortran/40969
779         Revert:
780         2009-08-04  Tobias Burnus  <burnus@net-b.de>
781
782         PR fortran/40949
783         * trans-types.c (gfc_get_function_type): Fix typelist of
784         functions without argument.
785
786 2009-08-05  Paul Thomas  <pault@gcc.gnu.org>
787
788         PR fortran/40847
789         * iresolve.c (gfc_resolve_transfer): Correct error in 'mold'
790         character length for case where length expresson is NULL.
791
792 2009-08-04  Tobias Burnus  <burnus@net-b.de>
793
794         PR fortran/40949
795         * trans-types.c (gfc_get_function_type): Fix typelist of
796         functions without argument.
797
798 2009-08-04  Paul Thomas  <pault@gcc.gnu.org>
799
800         PR fortran/40875
801         * decl.c (add_init_expr_to_sym): Character symbols can only be
802         initialized with character expressions.
803
804 2009-08-02  Janus Weil  <janus@gcc.gnu.org>
805
806         PR fortran/40881
807         * decl.c (match_char_length): Warn about old-style character length
808         declarations.
809         * match.c (match_arithmetic_if,gfc_match_if): Modify warning message
810         for arithmetic if.
811         (gfc_match_goto): Warn about computed gotos.
812         (gfc_match_return): Warn about alternate return.
813         (gfc_match_st_function): Warn about statement functions.
814         * resolve.c (resolve_fl_procedure): Modify warning message for
815         assumed-length character functions.
816
817 2009-08-01  Paul Thomas  <pault@gcc.gnu.org>
818
819         PR fortran/40011
820         * error.c : Add static flag 'warnings_not_errors'.
821         (gfc_error): If 'warnings_not_errors' is set, branch to code
822         from gfc_warning.
823         (gfc_clear_error): Reset 'warnings_not_errors'.
824         (gfc_errors_to_warnings): New function.
825         * options.c (gfc_post_options): If pedantic and flag_whole_file
826         change the latter to a value of 2.
827         * parse.c (parse_module): Add module namespace to gsymbol.
828         (resolve_all_program_units): New function.
829         (clean_up_modules): New function.
830         (translate_all_program_units): New function.
831         (gfc_parse_file): If whole_file, do not clean up module right
832         away and add derived types to namespace derived types. In
833         addition, call the three new functions above.
834         * resolve.c (not_in_recursive): New function.
835         (not_entry_self_reference): New function.
836         (resolve_global_procedure): Symbol must not be IFSRC_UNKNOWN,
837         procedure must not be in the course of being resolved and
838         must return false for the two new functions. Pack away the
839         current derived type list before calling gfc_resolve for the
840         gsymbol namespace.  It is unconditionally an error if the ranks
841         of the reference and ther procedure do not match. Convert
842         errors to warnings during call to gfc_procedure_use if not
843         pedantic or legacy.
844         (gfc_resolve): Set namespace resolved flag to -1 during
845         resolution and store current cs_base.
846         * trans-decl.c (gfc_get_symbol_decl): If whole_file compilation
847         substitute a use associated variable, if it is available in a
848         gsymbolnamespace.
849         (gfc_get_extern_function_decl): If the procedure is use assoc,
850         do not attempt to find it in a gsymbol because it could be an
851         interface. If the symbol exists in a module namespace, return
852         its backend_decl.
853         * trans-expr.c (gfc_trans_scalar_assign): If a derived type
854         assignment, set the rhs TYPE_MAIN_VARIANT to that of the rhs.
855         * trans-types.c (copy_dt_decls_ifequal): Add 'from_gsym' as a
856         boolean argument. Copy component backend_decls directly if the
857         components are derived types and from_gsym is true.
858         (gfc_get_derived_type): If whole_file copy the derived type from
859         the module if it is use associated, otherwise, if can be found
860         in another gsymbol namespace, use the existing derived type as
861         the TYPE_CANONICAL and build normally.
862         * gfortran.h : Add derived_types and resolved fields to
863         gfc_namespace. Include prototype for gfc_errors_to_warnings.
864
865 2009-07-29  Tobias Burnus  <burnus@net-b.de>
866
867         PR fortran/40898
868         * trans-types.c (gfc_get_function_type): Do not add hidden
869         string-length argument for BIND(C) procedures.
870         * trans-decl.c (create_function_arglist): Skip over nonexisting
871         string-length arguments for BIND(C) procedures.
872
873 2009-07-28  Jakub Jelinek  <jakub@redhat.com>
874
875         PR fortran/40878
876         * openmp.c (gfc_match_omp_clauses): Use gfc_error_now instead of
877         gfc_error to diagnose invalid COLLAPSE arguments.
878
879 2009-07-28  Janus Weil  <janus@gcc.gnu.org>
880
881         PR fortran/40882
882         * trans-types.c (gfc_get_ppc_type): For derived types, directly use the
883         backend_decl, instead of calling gfc_typenode_for_spec, to avoid
884         infinte loop.
885         (gfc_get_derived_type): Correctly handle PPCs returning derived types,
886         avoiding infinite recursion.
887
888 2009-07-27  Janus Weil  <janus@gcc.gnu.org>
889
890         PR fortran/40848
891         * interface.c (gfc_compare_interfaces): Call 'count_types_test' before
892         'generic_correspondence', and only if checking a generic interface.
893
894 2009-07-27  Tobias Burnus  <burnus@net-b.de>
895
896         PR fortran/40851
897         * resolve.c (resolve_symbol): Do not initialize pointer derived-types.
898         * trans-decl.c (init_intent_out_dt): Ditto.
899         (generate_local_decl): No need to set attr.referenced for DT pointers.
900
901 2009-07-26  Tobias Burnus  <burnus@net-b.de>
902
903         PR fortran/33197
904         * intrinsic.c (make_generic): Remove assert as "atan" can be
905         both ISYM_ATAN and ISYM_ATAN2.
906         (add_functions): Add two-argument variant of ATAN.
907         * intrinsic.h (gfc_check_atan_2): Add check for it.
908         * intrinsic.texi (ATAN2): Correct and enhance description.
909         (ATAN): Describe two-argument variant of ATAN.
910
911 2009-07-25  Tobias Burnus  <burnus@net-b.de>
912             Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
913
914         PR fortran/33197
915         * intrinsic.c (add_functions): Support complex arguments for
916         acos,acosh,asin,asinh,atan,atanh.
917         * invoke.texi (ACOS,ACOSH,ASIN,ASINH,ATAN,ATANH): Support
918         complex arguments.
919         * simplify.c (gfc_simplify_acos,gfc_simplify_acosh,
920         gfc_simplify_asin,gfc_simplify_asinh,gfc_simplify_atan,
921         gfc_simplify_atanh,gfc_simplify_atan,gfc_simplify_asinh,
922         gfc_simplify_acosh,gfc_simplify_atanh): Support
923         complex arguments.
924
925 2009-07-25  Richard Guenther  <rguenther@suse.de>
926
927         PR fortran/40005
928         * trans-types.c (gfc_get_array_type_bounds): Use
929         build_distinct_type_copy with a proper TYPE_CANONICAL and
930         re-use the type-decl of the original type.
931         * trans-decl.c (build_entry_thunks): Signal cgraph we may not
932         garbage collect.
933         (create_main_function): Likewise.
934         (gfc_generate_function_code): Likewise.
935         * trans-expr.c (gfc_trans_subcomponent_assign): Do not use
936         fold_convert on record types.
937
938 2009-07-25  Janus Weil  <janus@gcc.gnu.org>
939
940         PR fortran/39630
941         * decl.c (match_ppc_decl): Implement the PASS attribute for procedure
942         pointer components.
943         (match_binding_attributes): Ditto.
944         * gfortran.h (gfc_component): Add member 'tb'.
945         (gfc_typebound_proc): Add member 'ppc' and make 'pass_arg' const.
946         * module.c (MOD_VERSION): Bump module version.
947         (binding_ppc): New string constants.
948         (mio_component): Only use formal args if component is a procedure
949         pointer and add 'tb' member.
950         (mio_typebound_proc): Include pass_arg and take care of procedure
951         pointer components.
952         * resolve.c (update_arglist_pass): Add argument 'name' and take care of
953         optional arguments.
954         (extract_ppc_passed_object): New function, analogous to
955         extract_compcall_passed_object, but for procedure pointer components.
956         (update_ppc_arglist): New function, analogous to
957         update_compcall_arglist, but for procedure pointer components.
958         (resolve_typebound_generic_call): Added argument to update_arglist_pass.
959         (resolve_ppc_call, resolve_expr_ppc): Take care of PASS attribute.
960         (resolve_fl_derived): Check the PASS argument for procedure pointer
961         components.
962         * symbol.c (verify_bind_c_derived_type): Reject procedure pointer
963         components in BIND(C) types.
964
965 2009-07-24  Janus Weil  <janus@gcc.gnu.org>
966
967         PR fortran/40822
968         * array.c (gfc_resolve_character_array_constructor): Use new function
969         gfc_new_charlen.
970         * decl.c (add_init_expr_to_sym,variable_decl,match_char_spec,
971         gfc_match_implicit): Ditto.
972         * expr.c (gfc_simplify_expr): Ditto.
973         * gfortran.h (gfc_new_charlen): New prototype.
974         * iresolve.c (check_charlen_present,gfc_resolve_char_achar): Use new
975         function gfc_new_charlen.
976         * module.c (mio_charlen): Ditto.
977         * resolve.c (gfc_resolve_substring_charlen,
978         gfc_resolve_character_operator,fixup_charlen,resolve_fl_derived,
979         resolve_symbol): Ditto.
980         * symbol.c (gfc_new_charlen): New function to create a new gfc_charlen
981         structure and add it to a namespace.
982         (gfc_copy_formal_args_intr): Make sure ts.cl is present
983         for CHARACTER variables.
984
985 2009-07-24  Jakub Jelinek  <jakub@redhat.com>
986
987         PR fortran/40643
988         PR fortran/31067
989         * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc,
990         gfc_conv_intrinsic_minmaxval): Handle Infinities and NaNs properly,
991         optimize.
992         * trans-array.c (gfc_trans_scalarized_loop_end): No longer static.
993         * trans-array.h (gfc_trans_scalarized_loop_end): New prototype.
994
995 2009-07-23  Jakub Jelinek  <jakub@redhat.com>
996
997         PR fortran/40839
998         * io.c (gfc_resolve_dt): Add LOC argument.  Fail if
999         dt->io_unit is NULL.  Return FAILURE after issuing error about
1000         negative UNIT number.
1001         (match_io_element): Don't segfault if current_dt->io_unit is NULL.
1002         * gfortran.h (gfc_resolve_dt): Adjust prototype.
1003         * resolve.c (resolve_code): Adjust caller.
1004
1005 2009-07-22  Paul Thomas  <pault@gcc.gnu.org>
1006
1007         PR fortran/40796
1008         * trans-decl.c (generate_local_decl): Unreferenced result
1009         variables with allocatable components should be treated like
1010         INTENT_OUT dummy variables.
1011
1012 2009-07-22  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1013
1014         * trans.h (gfc_set_decl_assembler_name): New prototype.
1015         * trans-decl.c (gfc_set_decl_assembler_name): New function.
1016         (gfc_get_symbol_decl, gfc_get_extern_function_decl,
1017         build_function_decl): Use gfc_set_decl_assembler_name instead of
1018         SET_DECL_ASSEMBLER_NAME.
1019         * trans-common.c (build_common_decl): Use
1020         gfc_set_decl_assembler_name instead of SET_DECL_ASSEMBLER_NAME.
1021
1022 2009-07-21  Richard Guenther  <rguenther@suse.de>
1023
1024         PR fortran/40726
1025         * trans-decl.c (gfc_get_extern_function_decl): Do not set
1026         DECL_IS_MALLOC for pointer valued functions.
1027         (build_function_decl): The same.
1028
1029 2009-07-19  Steven G. Kargl  <kargl@gcc.gnu.org>
1030
1031         PR fortran/40727
1032         * fortran/check.c (gfc_check_cmplx, gfc_check_dcmplx): Add check that
1033         the optional second argument isn't of COMPLEX type.
1034
1035 2009-07-17  Richard Guenther  <rguenther@suse.de>
1036
1037         PR c/40401
1038         * f95-lang.c (gfc_be_parse_file): Do not finalize the CU here.
1039         * trans-decl.c (gfc_gimplify_function): Remove.
1040         (build_entry_thunks): Do not gimplify here.
1041         (create_main_function): Likewise.
1042         (gfc_generate_function_code): Likewise.
1043
1044 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
1045             Manuel López-Ibáñez  <manu@gcc.gnu.org>
1046
1047         PR 40435 
1048         * trans-expr.c, trans-array.c, trans-openmp.c, trans-stmt.c,
1049         trans.c, trans-io.c, trans-decl.c, trans-intrinsic.c: Add location
1050         argument to fold_{unary,binary,ternary}, fold_build[123],
1051         build_call_expr, build_size_arg, build_fold_addr_expr,
1052         build_call_array, non_lvalue, size_diffop,
1053         fold_build1_initializer, fold_build2_initializer,
1054         fold_build3_initializer, fold_build_call_array,
1055         fold_build_call_array_initializer, fold_single_bit_test,
1056         omit_one_operand, omit_two_operands, invert_truthvalue,
1057         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
1058         combine_comparisons, fold_builtin_*, fold_call_expr,
1059         build_range_check, maybe_fold_offset_to_address, round_up,
1060         round_down.
1061
1062 2009-07-15  Janus Weil  <janus@gcc.gnu.org>
1063
1064         PR fortran/40743
1065         * resolve.c (resolve_symbol): Don't resolve the formal namespace of a
1066         contained procedure.
1067
1068 2009-07-14  Taras Glek  <tglek@mozilla.com>
1069             Rafael Espindola  <espindola@google.com>
1070
1071         * Make-lang.in (fortran.install-plugin): New target for
1072         installing plugin headers.
1073
1074 2009-07-13  H.J. Lu  <hongjiu.lu@intel.com>
1075
1076         * module.c (mio_symbol): Remove the unused variable, formal.
1077
1078 2009-07-13  Janus Weil  <janus@gcc.gnu.org>
1079
1080         PR fortran/40646
1081         * module.c (mio_symbol): If the symbol has formal arguments,
1082         the formal namespace will be present.
1083         * resolve.c (resolve_actual_arglist): Correctly handle 'called'
1084         procedure pointer components as actual arguments.
1085         (resolve_fl_derived,resolve_symbol): Make sure the formal namespace
1086         is present.
1087         * trans-expr.c (gfc_conv_procedure_call): Correctly handle the formal
1088         arguments of procedure pointer components.
1089
1090 2009-07-12  Tobias Burnus  <burnus@net-b.de>
1091             Philippe Marguinaud <philippe.marguinaud@meteo.fr>
1092
1093         PR fortran/40588
1094         * primary.c (match_charkind_name): Fix condition for $ matching.
1095
1096         PR libfortran/22423
1097         * libgfortran.h: Typedef the GFC_DTYPE_* enum.
1098
1099 2009-07-11  Tobias Burnus  <burnus@net-b.de>
1100
1101         PR fortran/33197
1102         * check.c (gfc_check_fn_rc2008): New function.
1103         * intrinsic.h (gfc_check_fn_rc2008): New prototype.
1104         * intrinsic.c (add_functions): Add complex tan, cosh, sinh,
1105         and tanh.
1106
1107 2009-07-10  Paul Thomas  <pault@gcc.gnu.org>
1108
1109         PR fortran/39334
1110         * primary.c (match_kind_param): Return MATCH_NO if the symbol
1111         has no value.
1112
1113 2008-07-09  Paul Thomas  <pault@gcc.gnu.org>
1114
1115         PR fortran/40629
1116         * resolve.c (check_host_association):  Use the existing
1117         accessible symtree and treat function expressions with
1118         symbols that have procedure flavor.
1119
1120 2009-07-09  Janus Weil  <janus@gcc.gnu.org>
1121
1122         PR fortran/40646
1123         * dump-parse-tree.c (show_expr): Renamed 'is_proc_ptr_comp'.
1124         * expr.c (is_proc_ptr_comp): Renamed to 'gfc_is_proc_ptr_comp'.
1125         (gfc_check_pointer_assign): Renamed 'is_proc_ptr_comp'.
1126         (replace_comp,gfc_expr_replace_comp): New functions, analogous
1127         to 'replace_symbol' and 'gfc_expr_replace_symbol', just with components
1128         instead of symbols.
1129         * gfortran.h (gfc_expr_replace_comp): New prototype.
1130         (is_proc_ptr_comp): Renamed to 'gfc_is_proc_ptr_comp'.
1131         * interface.c (compare_actual_formal): Renamed 'is_proc_ptr_comp'.
1132         * match.c (gfc_match_pointer_assignment): Ditto.
1133         * primary.c (gfc_match_varspec): Handle array-valued procedure pointers
1134         and procedure pointer components. Renamed 'is_proc_ptr_comp'.
1135         * resolve.c (resolve_fl_derived): Correctly handle interfaces with
1136         RESULT statement, and handle array-valued procedure pointer components.
1137         (resolve_actual_arglist,resolve_ppc_call,resolve_expr_ppc): Renamed
1138         'is_proc_ptr_comp'.
1139         * trans-array.c (gfc_walk_function_expr): Ditto.
1140         * trans-decl.c (gfc_get_symbol_decl): Security check for presence of
1141         ns->proc_name.
1142         * trans-expr.c (gfc_conv_procedure_call): Handle array-valued procedure
1143         pointer components. Renamed 'is_proc_ptr_comp'.
1144         (conv_function_val,gfc_trans_arrayfunc_assign): Renamed
1145         'is_proc_ptr_comp'.
1146         (gfc_get_proc_ptr_comp): Do not modify the argument 'e', but instead
1147         make a copy of it.
1148         * trans-io.c (gfc_trans_transfer): Handle array-valued procedure
1149         pointer components.
1150
1151 2009-07-09  Tobias Burnus  <burnus@net-b.de>
1152
1153         PR fortran/40604
1154         * intrinsic.c (gfc_convert_type_warn): Set sym->result.
1155         * trans-expr.c (gfc_conv_procedure_call): Fix -fcheck=pointer
1156         for optional arguments.
1157
1158 2009-07-08  Tobias Burnus  <burnus@net-b.de>
1159
1160         PR fortran/40675
1161         * simplify.c (gfc_simplify_sign): Handle signed zero correctly.
1162         * trans-intrinsic.c (gfc_conv_intrinsic_sign): Support
1163         -fno-sign-zero.
1164         * invoke.texi (-fno-sign-zero): Add text regarding SIGN intrinsic.
1165
1166 2008-07-08  Paul Thomas  <pault@gcc.gnu.org>
1167
1168         PR fortran/40591
1169         * decl.c (match_procedure_interface):  Correct the association
1170         or creation of the interface procedure's symbol.
1171
1172 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
1173
1174         * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): For integer
1175         maxloc initialize limit to -huge-1 rather than just -huge.
1176
1177 2009-07-04  Janus Weil  <janus@gcc.gnu.org>
1178
1179         PR fortran/40593
1180         * interface.c (compare_actual_formal): Take care of proc-pointer-valued
1181         functions as actual arguments.
1182         * trans-expr.c (gfc_conv_procedure_call): Ditto.
1183         * resolve.c (resolve_specific_f0): Use the correct ts.
1184
1185 2009-07-02  Michael Matz  <matz@suse.de>
1186
1187         PR fortran/32131
1188         * trans-array.c (gfc_conv_descriptor_stride_get): Return
1189         constant one for strides in the first dimension of ALLOCATABLE
1190         arrays.
1191
1192 2009-06-30  Janus Weil  <janus@gcc.gnu.org>
1193
1194         PR fortran/40594
1195         * trans-types.c (gfc_get_derived_type): Bugfix, reverting one hunk from
1196         r147206.
1197
1198 2009-06-29  Tobias Burnus  <burnus@net-b.de>
1199
1200         PR fortran/40580
1201         * trans-expr.c  (gfc_conv_procedure_call): Add -fcheck=pointer check.
1202         * libgfortran.h: Add GFC_RTCHECK_POINTER.
1203         * invoke.texi (-fcheck): Document new pointer option.
1204         * options.c (gfc_handle_runtime_check_option): Handle pointer option.
1205
1206         * gfortran.texi (C Binding): Improve wording.
1207         * iso-c-binding.def: Remove obsolete comment.
1208
1209 2009-06-29  Paul Thomas  <pault@gcc.gnu.org>
1210
1211         PR fortran/40551
1212         * dependency.h : Add second bool* argument to prototype of
1213         gfc_full_array_ref_p.
1214         * dependency.c (gfc_full_array_ref_p): If second argument is
1215         present, return true if last dimension of reference is an
1216         element or has unity stride.
1217         * trans-array.c : Add NULL second argument to references to
1218         gfc_full_array_ref_p.
1219         * trans-expr.c : The same, except for;
1220         (gfc_trans_arrayfunc_assign): Return fail if lhs reference
1221         is not a full array or a contiguous section.
1222
1223 2009-06-28  Tobias Burnus  <burnus@net-b.de>
1224             Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1225
1226         PR fortran/34112
1227         * symbol.c (gfc_add_ext_attribute): New function.
1228         (gfc_get_sym_tree): New argument allow_subroutine.
1229         (gfc_get_symbol,gfc_get_ha_sym_tree,gen_cptr_param,gen_fptr_param
1230         gen_shape_param,generate_isocbinding_symbol): Use it.
1231         * decl.c (find_special): New argument allow_subroutine.
1232         (add_init_expr_to_sym,add_hidden_procptr_result,attr_decl1,
1233         match_procedure_in_type,gfc_match_final_decl): Use it.
1234         (gfc_match_gcc_attributes): New function.
1235         * gfortran.texi (Mixed-Language Programming): New section
1236         "GNU Fortran Compiler Directives".
1237         * gfortran.h (ext_attr_t): New struct.
1238         (symbol_attributes): Use it.
1239         (gfc_add_ext_attribute): New prototype.
1240         (gfc_get_sym_tree): Update pototype.
1241         * expr.c (gfc_check_pointer_assign): Check whether call
1242         convention is the same.
1243         * module.c (import_iso_c_binding_module, create_int_parameter,
1244         use_iso_fortran_env_module): Update gfc_get_sym_tree call.
1245         * scanner.c (skip_gcc_attribute): New function.
1246         (skip_free_comments,skip_fixed_comments): Use it.
1247         (gfc_next_char_literal): Support !GCC$ lines.
1248         * resolve.c (check_host_association): Update
1249         gfc_get_sym_tree call.
1250         * match.c (gfc_match_sym_tree,gfc_match_call): Update
1251         gfc_get_sym_tree call.
1252         * trans-decl.c (add_attributes_to_decl): New function.
1253         (gfc_get_symbol_decl,get_proc_pointer_decl,
1254         gfc_get_extern_function_decl,build_function_decl: Use it.
1255         * match.h (gfc_match_gcc_attributes): Add prototype.
1256         * parse.c (decode_gcc_attribute): New function.
1257         (next_free,next_fixed): Support !GCC$ lines.
1258         * primary.c (match_actual_arg,check_for_implicit_index,
1259         gfc_match_rvalue,gfc_match_rvalue): Update
1260         gfc_get_sym_tree call.
1261
1262 2009-06-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1263
1264         * gfortran.h: Define HAVE_mpc_pow.
1265         * arith.c (complex_reciprocal, complex_pow): If HAVE_mpc_pow,
1266         don't define these functions.
1267         (arith_power): If HAVE_mpc_pow, use mpc_pow.
1268
1269 2009-06-26  Janus Weil  <janus@gcc.gnu.org>
1270
1271         PR fortran/39997
1272         PR fortran/40541
1273         * decl.c (add_hidden_procptr_result): Copy the typespec to the hidden
1274         result.
1275         * expr.c (gfc_check_pointer_assign): Enable interface check for
1276         procedure pointer assignments where the rhs is a function returning a
1277         procedure pointer.
1278         * resolve.c (resolve_symbol): If an external procedure with unspecified
1279         return type can not be implicitly typed, it must be a subroutine.
1280
1281 2009-06-24  Janus Weil  <janus@gcc.gnu.org>
1282
1283         PR fortran/40427
1284         * gfortran.h (gfc_component): New member 'formal_ns'.
1285         (gfc_copy_formal_args_ppc,void gfc_ppc_use): New.
1286         * interface.c (gfc_ppc_use): New function, analogous to
1287         gfc_procedure_use, but for procedure pointer components.
1288         * module.c (MOD_VERSION): Bump module version.
1289         (mio_component): Treat formal arguments.
1290         (mio_formal_arglist): Changed argument from gfc_symbol to
1291         gfc_formal_arglist.
1292         (mio_symbol): Changed argument of mio_formal_arglist.
1293         * resolve.c (resolve_ppc_call,resolve_expr_ppc): Call gfc_ppc_use,
1294         to check actual arguments and treat formal args correctly.
1295         (resolve_fl_derived): Copy formal args of procedure pointer components
1296         from their interface.
1297         * symbol.c (gfc_copy_formal_args_ppc): New function, analogous to
1298         gfc_copy_formal_args, but for procedure pointer components.
1299
1300 2009-06-22  Janus Weil  <janus@gcc.gnu.org>
1301
1302         PR fortran/37254
1303         PR fortran/39850
1304         * interface.c (compare_parameter): Set implicit type for function
1305         actual arguments with BT_UNKNOWN.
1306
1307 2009-06-22  Tobias Burnus  <burnus@net-b.de>
1308
1309         PR fortran/40472
1310         PR fortran/50520
1311         * simplify.c (gfc_simplify_spread): Fix the case that source=
1312         is a scalar.
1313
1314 2009-06-22  Paul Thomas  <pault@gcc.gnu.org>
1315
1316         PR fortran/40443
1317         * interface.c (gfc_search_interface): Hold back a match to an
1318         elementary procedure until all other possibilities are
1319         exhausted.
1320
1321 2009-06-22  Paul Thomas  <pault@gcc.gnu.org>
1322
1323         PR fortran/40472
1324         * simplify.c (gfc_simplify_spread): Restrict the result size to
1325         the limit for an array constructor.
1326
1327 2009-06-21  Janus Weil  <janus@gcc.gnu.org>
1328
1329         PR fortran/39850
1330         * interface.c (gfc_compare_interfaces): Take care of implicit typing
1331         when checking the function attribute. Plus another bugfix.
1332         (compare_parameter): Set attr.function and attr.subroutine according
1333         to the usage of a procedure as actual argument.
1334
1335 2009-06-20  Tobias Burnus  <burnus@net-b.de>
1336
1337         PR fortran/40452
1338         * trans-decl.c (add_argument_checking): Disable bounds check
1339         for allowed argument storage association.
1340
1341 2009-06-19  Paul Thomas  <pault@gcc.gnu.org>
1342
1343         PR fortran/40440
1344         * trans-expr.c (gfc_conv_procedure_call): Do not deallocate
1345         allocatable components if the argument is a pointer.
1346
1347 2009-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1348
1349         * gfortran.h (gfc_expr): Use mpc_t to represent complex numbers.
1350
1351         * arith.c, dump-parse-tree.c, expr.c, module.c, resolve.c,
1352         simplify.c, target-memory.c, target-memory.h, trans-const.c,
1353         trans-expr.c: Convert to mpc_t throughout.
1354
1355 2009-06-19  Ian Lance Taylor  <iant@google.com>
1356
1357         * cpp.c (struct gfc_cpp_option_data): Give this struct, used for
1358         the global variable gfc_cpp_option, a name.
1359
1360 2009-06-19  Janus Weil  <janus@gcc.gnu.org>
1361
1362         PR fortran/40450
1363         * trans-expr.c (gfc_conv_procedure_call): Only add an extra addr_expr
1364         to a procedure pointer actual argument, if it is not itself a
1365         dummy arg.
1366
1367 2009-06-18  Janus Weil  <janus@gcc.gnu.org>
1368
1369         PR fortran/40451
1370         * resolve.c (resolve_contained_fntype): Prevent implicit typing for
1371         procedures with explicit interface.
1372         * symbol.c (gfc_check_function_type): Ditto.
1373
1374 2009-06-16  Ian Lance Taylor  <iant@google.com>
1375
1376         * decl.c (build_struct): Rewrite loop over constructor elements.
1377
1378 2009-06-16  Janus Weil  <janus@gcc.gnu.org>
1379
1380         PR fortran/36947
1381         PR fortran/40039
1382         * expr.c (gfc_check_pointer_assign): Call 'gfc_compare_interfaces' with
1383         error message.
1384         * gfortran.h (gfc_compare_interfaces): Additional argument.
1385         * interface.c (operator_correspondence): Removed.
1386         (gfc_compare_interfaces): Additional argument to return error message.
1387         Directly use the code from 'operator_correspondence' instead of calling
1388         the function. Check for OPTIONAL. Some rearrangements.
1389         (check_interface1): Call 'gfc_compare_interfaces' without error message.
1390         (compare_parameter): Call 'gfc_compare_interfaces' with error message.
1391         * resolve.c (check_generic_tbp_ambiguity): Call 'gfc_compare_interfaces'
1392         without error message.
1393
1394 2009-06-16  Tobias Burnus  <burnus@net-b.de>
1395
1396         PR fortran/40383
1397         * trans-decl.c (create_function_arglist): Copy formal charlist to
1398         have a proper passed_length for -fcheck=bounds.
1399
1400 2009-06-12  Steven G. Kargl  <kargls@comcast.net>
1401
1402         * arith.c (gfc_enum_initializer): Move function ...
1403         * decl.c: ... here.  Remove gfc_ prefix and make static.
1404         (enumerator_decl): Update function call.
1405         * gfortran.h:  Remove gfc_enum_initializer prototype.
1406
1407 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
1408
1409         * trans-array.c (gfc_trans_allocate_array_storage): Pass
1410         location on down.
1411         (gfc_trans_array_constructor_value): Same.
1412         (gfc_trans_scalarized_loop_end): Same.
1413         (gfc_conv_ss_startstride): Same.
1414         (gfc_trans_g77_array): Same.
1415         (gfc_trans_dummy_array_bias): Same.
1416         (gfc_conv_array_parameter): Same.
1417         (structure_alloc_comps): Same.
1418         * trans-expr.c (gfc_conv_function_call): Same.
1419         (fill_with_spaces): Same.
1420         (gfc_trans_string_copy): Same.
1421         (gfc_trans_scalar_assign): Same.
1422         * trans-stmt.c (gfc_trans_goto): Same.
1423         (gfc_trans_if_1): Same.
1424         (gfc_trans_simple_do): Same.
1425         (gfc_trans_do): Same.
1426         (gfc_trans_do_while): Same.
1427         (gfc_trans_logical_select): Same.
1428         (gfc_trans_select): Same.
1429         (gfc_trans_forall_loop): Same.
1430         (gfc_trans_nested_forall_loop): Same.
1431         (generate_loop_for_temp_to_lhs): Same.
1432         (generate_loop_for_rhs_to_temp): Same.
1433         (gfc_trans_forall_1): Same.
1434         (gfc_trans_where_assign): Same.
1435         (gfc_trans_where_3): Same.
1436         (gfc_trans_allocate): Same.
1437         * trans.c (gfc_finish_block): Same.
1438         (gfc_trans_runtime_check): Same.
1439         (gfc_call_malloc): Same.
1440         (gfc_allocate_with_status): Same.
1441         (gfc_call_free): Same.
1442         (gfc_deallocate_with_status): Same.
1443         (gfc_call_realloc): Same.
1444         (gfc_trans_code): Same.
1445         * trans-decl.c (gfc_init_default_dt): Same.
1446         (gfc_generate_constructors): Same.
1447         * trans-io.c (gfc_trans_io_runtime_check): Same.
1448         * trans-intrinsic.c (gfc_conv_intrinsic_ctime): Same.
1449         (gfc_conv_intrinsic_fdate): Same.
1450         (gfc_conv_intrinsic_ttynam): Same.
1451         (gfc_conv_intrinsic_minmax): Same.
1452         (gfc_conv_intrinsic_minmax_char): Same.
1453         (gfc_conv_intrinsic_anyall): Same.
1454         (gfc_conv_intrinsic_count): Same.
1455         (gfc_conv_intrinsic_arith): Same.
1456         (gfc_conv_intrinsic_minmaxloc): Same.
1457         (gfc_conv_intrinsic_minmaxval): Same.
1458         (gfc_conv_intrinsic_rrspacing): Same.
1459         (gfc_conv_intrinsic_array_transfer): Same.
1460         (gfc_conv_intrinsic_trim): Same.
1461         (gfc_conv_intrinsic_repeat): Same.
1462         
1463 2009-06-12  Janus Weil  <janus@gcc.gnu.org>
1464
1465         PR fortran/40176
1466         * resolve.c (resolve_symbol): Additional error check, preventing an
1467         infinite loop.
1468
1469 2009-06-11  Paul Thomas  <pault@gcc.gnu.org>
1470
1471         PR fortran/40402
1472         * resolve.c (next_data_value): It is an error if the value is
1473         not constant.
1474
1475 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1476
1477         PR fortran/38718
1478         * intrinsic.c (add_functions): Add simplifiers for ISNAN,
1479         IS_IOSTAT_END and IS_IOSTAT_EOR.
1480         * intrinsic.h (gfc_simplify_is_iostat_end, gfc_simplify_is_iostat_eor,
1481         gfc_simplify_isnan): New prototypes.
1482         * intrinsic.c (gfc_simplify_is_iostat_end, gfc_simplify_is_iostat_eor,
1483         gfc_simplify_isnan): New functions.
1484
1485 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
1486
1487         * interface.c (fold_unary): Rename to...
1488         (fold_unary_intrinsic): ... this.
1489         (gfc_extend_expr): Adjust caller.
1490         (gfc_match_generic_spec): Likewise.  Initialize *op to INTRINSIC_NONE
1491         to avoid warnings.
1492         * expr.c (gfc_simplify_expr): Initialize start and end before calling
1493         gfc_extract_int.
1494
1495 2009-06-10  Dave Korn  <dave.korn.cygwin@gmail.com>
1496
1497         * trans-decl.c (create_main_function):  Don't build main decl twice.
1498
1499 2009-06-09  Tobias Burnus  <burnus@net-b.de>
1500
1501         * trans-decl.c (gfc_generate_function_code): Use gfc_option.rtcheck
1502         instead of flag_bounds_check.
1503         * intrinsic.texi (ISO_FORTRAN_ENV): Document INT{8,16,32,64} and
1504         REAL{32,64,128}.
1505
1506 2009-06-08  Paul Thomas  <pault@gcc.gnu.org>
1507
1508         * trans-array.h : Replace prototypes for
1509         gfc_conv_descriptor_offset, gfc_conv_descriptor_stride,
1510         gfc_conv_descriptor_lbound, gfc_conv_descriptor_ubound with new
1511         prototypes of the same names with _get or _set appended.
1512         * trans-array.c : Make the originals of the above static and
1513         new functions for the _get and _set functions. Update all the
1514         references to these descriptor access functions.
1515         * trans-expr.c : Update references to the above descriptor
1516         access functions.
1517         * trans-intrinsic.c : The same.
1518         * trans-openmp.c : The same.
1519         * trans-stmt.c : The same.
1520
1521 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
1522
1523         * options.c (gfc_post_options): Disable dump_parse_tree
1524         during -fcompare-debug-second.
1525
1526 2009-06-07  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1527
1528         PR fortran/40008
1529         * gfortran.h (gfc_open): Add newunit expression to structure.
1530         * io.c (io_tag): Add new unit tag and fix whitespace.
1531         (match_open_element): Add matching for newunit.
1532         (gfc_free_open): Free the newunit expression.
1533         (gfc_resolve_open): Add newunit to resolution and check constraints.
1534         (gfc_resolve_close): Add check for non-negative unit.
1535         (gfc_resolve_filepos): Likewise.
1536         (gfc_resolve_dt): Likewise.
1537         * trans-io.c (set_parameter_value): Build runtime checks for unit
1538         numbers within range of kind=4 integer. (gfc_trans_open) Set the
1539         newunit parameter.
1540         * ioparm.def (IOPARM): Define the newunit parameter as a pointer
1541         to GFC_INTEGER_4, pint4.
1542
1543 2009-06-07  Daniel Franke  <franke.daniel@gmail.com>
1544
1545         PR fortran/25104
1546         PR fortran/29962
1547         * array.c (gfc_append_constructor): Added NULL-check.
1548         * check.c (gfc_check_spread): Check DIM.
1549         (gfc_check_unpack): Check that the ARRAY arguments provides enough
1550         values for MASK.
1551         * intrinsic.h (gfc_simplify_spread): New prototype.
1552         (gfc_simplify_unpack): Likewise.
1553         * intrinsic.c (add_functions): Added new simplifier callbacks.
1554         * simplify.c (gfc_simplify_spread): New.
1555         (gfc_simplify_unpack): New.
1556         * expr.c (check_transformational): Allow additional transformational
1557         intrinsics in initialization expression.
1558
1559 2009-06-07  Daniel Franke  <franke.daniel@gmail.com>
1560
1561         PR fortran/25104
1562         PR fortran/29962
1563         * check.c (gfc_check_all_any): Check rank of DIM.
1564         (gfc_check_count): Likewise.
1565         * intrinsic.h (gfc_simplify_all): New prototype.
1566         (gfc_simplify_any): Likewise.
1567         (gfc_simplify_count): Likewise.
1568         (gfc_simplify_sum): Likewise.
1569         (gfc_simplify_product): Likewise.
1570         * intrinsic.c (add_functions): Added new simplifier callbacks.
1571         * simplify.c (transformational_result): New.
1572         (simplify_transformation_to_scalar): New.
1573         (simplify_transformation_to_array): New.
1574         (gfc_count): New.
1575         (gfc_simplify_all): New.
1576         (gfc_simplify_any): New.
1577         (gfc_simplify_count): New.
1578         (gfc_simplify_sum): New.
1579         (gfc_simplify_product): New.
1580         * expr.c (check_transformational): Allow additional transformational
1581         intrinsics in initialization expression.
1582
1583 2009-06-07  Daniel Franke  <franke.daniel@gmail.com>
1584
1585         * check.c (dim_rank_check): Return SUCCESS if DIM=NULL.
1586         (gfc_check_lbound): Removed (now) redundant check for DIM=NULL.
1587         (gfc_check_minloc_maxloc): Likewise.
1588         (check_reduction): Likewise.
1589         (gfc_check_size): Likewise.
1590         (gfc_check_ubound): Likewise.
1591         (gfc_check_cshift): Added missing shape-conformance checks.
1592         (gfc_check_eoshift): Likewise.
1593         * gfortran.h (gfc_check_conformance): Modified prototype to printf-style.
1594         * expr.c (gfc_check_conformance): Accept error-message chunks in 
1595         printf-style. Changed all callers.
1596
1597
1598 2009-06-07  Daniel Franke  <franke.daniel@gmail.com>
1599
1600         PR fortran/25104
1601         PR fortran/29962
1602         * intrinsic.h (gfc_simplify_dot_product): New prototype.
1603         (gfc_simplify_matmul): Likewise.
1604         (gfc_simplify_transpose): Likewise.
1605         * intrinsic.c (add_functions): Added new simplifier callbacks.
1606         * simplify.c (init_result_expr): New.
1607         (compute_dot_product): New.
1608         (gfc_simplify_dot_product): New.
1609         (gfc_simplify_matmul): New.
1610         (gfc_simplify_transpose): New.
1611         * expr.c (check_transformational): Allow transformational intrinsics
1612         with simplifier in initialization expression.
1613
1614 2009-06-06  Daniel Franke  <franke.daniel@gmail.com>
1615
1616         PR fortran/37203
1617         * simplify.c (gfc_simplify_reshape): Fixed reshaping of empty arrays
1618         without padding.
1619
1620 2009-06-06  Daniel Franke  <franke.daniel@gmail.com>
1621
1622         PR fortran/32890
1623         * intrinsic.h (gfc_simplify_pack): New prototype.
1624         * intrinsic.c (add_functions): Added
1625         simplifier-callback to PACK.
1626         * simplify.c (is_constant_array_expr): Moved
1627         to beginning of file.
1628         (gfc_simplify_pack): New.
1629         * check.c (gfc_check_pack): Check that VECTOR has enough elements.
1630         Added safeguards for empty arrays.
1631
1632 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1633
1634         * simplify.c (call_mpc_func): Use mpc_realref/mpc_imagref
1635         instead of MPC_RE/MPC_IM.
1636
1637 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
1638
1639         * trans-decl.c (gfc_build_qualified_array): Don't skip generation
1640         of range types.
1641         * trans.h (struct lang_type): Add base_decls.
1642         (GFC_TYPE_ARRAY_BASE_DECL): New.
1643         * trans-types.c (gfc_get_array_type_bounds): Initialize base decls
1644         proactively and excessively.
1645         (gfc_get_array_descr_info): Use existing base decls if available.
1646
1647 2009-06-04  Daniel Franke  <franke.daniel@gmail.com>
1648
1649         PR fortran/37203
1650         * check.c (gfc_check_reshape): Additional checks for the
1651         SHAPE and ORDER arguments.
1652         * simplify.c (gfc_simplify_reshape): Converted argument checks
1653         to asserts.
1654
1655 2009-06-03  Tobias Burnus  <burnus@net-b.de>
1656
1657         * gfortran.texi: Add mixed-language programming, mention
1658         varying string lengths, some clean up of introduction parts.
1659         * intrinsic.texi (instrinsic modules): Create @menu for subsections.
1660         (ISO_C_BINDING): Support ISOCBINDING_INT_FAST128_T.
1661         * libgfortran.h: Comment to rember to keep gfortran.texi in sync.
1662         * iso-c-binding.def: Support ISOCBINDING_INT_FAST128_T.
1663
1664 2009-06-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1665             Tobias Burnus  <burnus@net-b.de>
1666
1667         * iso-c-binding.def: Use INTMAX_TYPE instead of intmax_type_node.
1668         * trans-types.c (init_c_interop_kinds): Remove intmax_type_node.
1669
1670 2009-06-03  Alexandre Oliva  <aoliva@redhat.com>
1671
1672         * module.c (mio_f2k_derived): Initialize cur.
1673
1674 2009-06-01  Tobias Burnus  <burnus@net-b.de>
1675
1676         PR fortran/40309
1677         * trans-decl.c (gfc_sym_identifier): Use "MAIN__" for PROGRAM "main".
1678         (create_main_function): Set main_identifier_node.
1679
1680 2009-05-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1681
1682         PR fortran/40019
1683         * trans-types.c (gfc_build_uint_type): Make nonstatic.
1684         * trans.h (gfor_fndecl_clz128, gfor_fndecl_ctz128): New prototypes.
1685         * trans-types.h (gfc_build_uint_type): Add prototype.
1686         * trans-decl.c (gfc_build_intrinsic_function_decls): Build
1687         gfor_fndecl_clz128 and gfor_fndecl_ctz128.
1688         * trans-intrinsic.c (gfc_conv_intrinsic_leadz,
1689         gfc_conv_intrinsic_trailz): Call the right builtins or library
1690         functions, and cast arguments to unsigned types first.
1691         * simplify.c (gfc_simplify_leadz): Deal with negative arguments.
1692
1693 2009-05-27  Ian Lance Taylor  <iant@google.com>
1694
1695         * Make-lang.in (gfortran$(exeext)): Change $(COMPILER) to
1696         $(LINKER).
1697         (f951$(exeext)): Likewise.
1698
1699 2009-05-27  Tobias Burnus  <burnus@net-b.de>
1700
1701         PR fortran/40270
1702         * trans-decl.c (create_main_function): Mark MAIN__ and
1703         argc/argv as TREE_USED and push/pop function_decl context
1704         if needed.
1705
1706 2009-05-26  Tobias Burnus  <burnus@net-b.de>
1707
1708         PR fortran/39178
1709         * gfortranspec.c (lang_specific_driver): Stop linking
1710         libgfortranbegin.
1711         * trans-decl.c (gfc_build_builtin_function_decls): Stop
1712         making MAIN__ publicly visible.
1713         (gfc_build_builtin_function_decls): Add
1714         gfor_fndecl_set_args.
1715         (create_main_function) New function.
1716         (gfc_generate_function_code): Use it.
1717
1718 2009-05-26  Tobias Burnus  <burnus@net-b.de>
1719
1720         PR fortran/40246
1721         * match.c (gfc_match_nullify): NULLify freed pointer.
1722
1723 2009-05-26  Ian Lance Taylor  <iant@google.com>
1724
1725         * Make-lang.in (gfortranspec.o): Use $(COMPILER).
1726         (gfortran$(exeext), f951$(exeext), fortran/cpp.o): Likewise.
1727
1728 2009-05-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1729
1730         * gfortran.h (GFC_MPC_RND_MODE): New.
1731         * simplify.c (call_mpc_func): New helper function.
1732         (gfc_simplify_cos, gfc_simplify_exp, gfc_simplify_log,
1733         gfc_simplify_sin, gfc_simplify_sqrt): Add MPC support.
1734
1735 2009-05-25  Janus Weil  <janus@gcc.gnu.org>
1736
1737         PR fortran/40176
1738         * primary.c (gfc_match_varspec): Handle procedure pointer components
1739         with array return value.
1740         * resolve.c (resolve_expr_ppc): Ditto.
1741         (resolve_symbol): Make sure the interface of a procedure pointer has
1742         been resolved.
1743         * trans-array.c (gfc_walk_function_expr): Handle procedure pointer
1744         components with array return value.
1745         * trans-expr.c (gfc_conv_component_ref,gfc_conv_procedure_call,
1746         gfc_trans_arrayfunc_assign): Ditto.
1747         (gfc_trans_pointer_assignment): Handle procedure pointer assignments,
1748         where the rhs is a dummy argument.
1749         * trans-types.c (gfc_get_ppc_type,gfc_get_derived_type): Handle
1750         procedure pointer components with array return value.
1751
1752 2009-05-24  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1753             Dominique Dhumieres
1754
1755         PR fortran/35732
1756         PR fortran/39872
1757         * trans-array.c (gfc_conv_ss_startstride): Add one to index.
1758
1759 2009-05-22  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1760
1761         PR fortran/40195
1762         * module.c (read_md5_from_module_file): Close file before returning.
1763
1764 2009-05-18  Janus Weil  <janus@gcc.gnu.org>
1765
1766         PR fortran/40164
1767         * primary.c (gfc_match_rvalue): Handle procedure pointer components in
1768         arrays.
1769         * resolve.c (resolve_ppc_call,resolve_expr_ppc): Resolve component and
1770         array references.
1771         (resolve_fl_derived): Procedure pointer components are not required to
1772         have constant array bounds in their return value.
1773
1774 2009-05-18  Janus Weil  <janus@gcc.gnu.org>
1775
1776         * intrinsic.c (add_sym): Fix my last commit (r147655),
1777         which broke bootstrap.
1778
1779 2009-05-18  Richard Guenther  <rguenther@suse.de>
1780
1781         PR fortran/40168
1782         * trans-expr.c (gfc_trans_zero_assign): For local array
1783         destinations use an assignment from an empty constructor.
1784
1785 2009-05-18  Janus Weil  <janus@gcc.gnu.org>
1786
1787         PR fortran/36947
1788         PR fortran/40039
1789         * expr.c (gfc_check_pointer_assign): Check intents when comparing
1790         interfaces.
1791         * gfortran.h (typedef struct gfc_intrinsic_arg): Add 'intent' member.
1792         (gfc_compare_interfaces): Additional argument.
1793         * interface.c (operator_correspondence): Add check for equality of
1794         intents, and new argument 'intent_check'.
1795         (gfc_compare_interfaces): New argument 'intent_check', which is passed
1796         on to operator_correspondence.
1797         (check_interface1): Don't check intents when comparing interfaces.
1798         (compare_parameter): Do check intents when comparing interfaces.
1799         * intrinsic.c (add_sym): Add intents for arguments of intrinsic
1800         procedures.
1801         (add_sym_1,add_sym_1s,add_sym_1m,add_sym_2,add_sym_2s,add_sym_3,
1802         add_sym_3ml,add_sym_3red,add_sym_3s,add_sym_4): Use INTENT_IN by
1803         default.
1804         (add_sym_1_intent,add_sym_1s_intent,add_sym_2s_intent,add_sym_3s_intent)
1805         : New functions to add intrinsic symbols, specifying custom intents.
1806         (add_sym_4s,add_sym_5s): Add new arguments to specify intents.
1807         (add_functions,add_subroutines): Add intents for various intrinsics.
1808         * resolve.c (check_generic_tbp_ambiguity): Don't check intents when
1809         comparing interfaces.
1810         * symbol.c (gfc_copy_formal_args_intr): Copy intent.
1811
1812 2009-05-17  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1813
1814         * iso-fortran-env.def: Define INT8, INT16, INT32, INT64, REAL32,
1815         REAL64 and REAL128.
1816         * gfortran.h (gfc_get_int_kind_from_width_isofortranenv,
1817         gfc_get_real_kind_from_width_isofortranenv): New prototypes.
1818         * iso-c-binding.def: Update definitions for the INT*_T,
1819         INT_LEAST*_T and INT_FAST*_T named parameters.
1820         * trans-types.c (get_typenode_from_name, get_int_kind_from_name,
1821         gfc_get_real_kind_from_width_isofortranenv): New functions.
1822
1823 2009-05-17  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1824
1825         PR fortran/36260
1826         * intrinsic.c (add_functions, add_subroutines): Fix argument
1827         names and wrap long lines.
1828         * intrinsic.texi: Fix documentation and argument names of
1829         LOG_GAMMA, DATAN2, DBESJN, DTIME, ETIME, FSTAT, STAT, LSTAT,
1830         GET_COMMAND, IDATE, LTIME, MOVE_ALLOC, NINT, OR, PRODUCT,
1831         SUM, RAND, RANDOM_SEED, REAL, SELECTED_INT_KIND,
1832         SELECTED_REAL_KIND and XOR.
1833
1834 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1835
1836         PR fortran/33197
1837         * intrinsic.c (add_functions): Use ERFC_SCALED simplification.
1838         * intrinsic.h (gfc_simplify_erfc_scaled): New prototype.
1839         * simplify.c (fullprec_erfc_scaled, asympt_erfc_scaled,
1840         gfc_simplify_erfc_scaled): New functions.
1841
1842 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1843
1844         PR fortran/31243
1845         * resolve.c (resolve_substring): Don't allow too large substring
1846         indexes.
1847         (gfc_resolve_substring_charlen): Fix typo.
1848         (gfc_resolve_character_operator): Fix typo.
1849         (resolve_charlen): Catch unreasonably large string lengths.
1850         * simplify.c (gfc_simplify_len): Don't error out on LEN
1851         range checks.
1852
1853 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1854
1855         PR fortran/36031
1856         * decl.c (set_enum_kind): Use global short-enums flag.
1857         * gfortran.h (gfc_option_t): Remove short_enums flag.
1858         * lang.opt (-fshort-enums): Refer to C documentation.
1859         * options.c (gfc_init_options, gfc_handle_option): Use global
1860         short-enums flag.
1861
1862 2009-05-15  Tobias Burnus  <burnus@net-b.de>
1863
1864         PR fortran/39352
1865         * f95-lang.c: Add gfc_maybe_initialize_eh.
1866         * gfortran.h: Add gfc_maybe_initialize_eh prototype.
1867         * Make-lang.in: Add new .h dendencies for f95-lang.c
1868         * openmp.c (resolve_omp_do): Call gfc_maybe_initialize_eh.
1869         * misc.c (gfc_free): Avoid #define trickery for free.
1870
1871 2009-05-14  Steven G. Kargl  <kargl@gcc.gnu.org>
1872
1873         * dump-parse-tree.c (show_code_node): Add ERRMSG to the dumping
1874         of allocate and deallocate statements.
1875
1876 2009-05-14  Ian Lance Taylor  <iant@google.com>
1877
1878         * decl.c (match_attr_spec): Change d to unsigned int.
1879         * dump-parse-tree.c (show_namespace): Change op to int.  Add cast.
1880         * interface.c (gfc_check_interfaces): Change i to int.  Add casts.
1881         * module.c (read_module): Change i to int.  Add cast.
1882         (write_module): Change i to int.
1883         * symbol.c (gfc_get_namespace): Change in to int.
1884         (gfc_free_namespace): Change i to int.
1885         * trans-io.c (gfc_build_io_library_fndecls): Change ptype to
1886         unsigned int.  Add cast.
1887         * trans-types.c (gfc_init_kinds): Change mode to unsigned int.
1888         Add casts.
1889
1890 2009-05-14  Daniel Kraft  <d@domob.eu>
1891
1892         PR fortran/40045
1893         * dump-parse-tree.c (show_typebound): Fix missing adaption to new
1894         type-bound procedure storage structure.
1895
1896 2009-05-14  Janus Weil  <janus@gcc.gnu.org>
1897
1898         PR fortran/39996
1899         * decl.c (gfc_match_function_decl): Use gfc_add_type.
1900         * symbol.c (gfc_add_type): Better checking for duplicate types in
1901         function declarations. And: Always give an error for duplicte types,
1902         not just a warning with -std=gnu.
1903
1904 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
1905
1906         PR fortran/39865
1907         * io.c (resolve_tag_format): CHARACTER array in FMT= argument
1908         isn't an extension.  Reject non-CHARACTER array element of
1909         assumed shape or pointer or assumed size array.
1910         * trans-array.c (array_parameter_size): New function.
1911         (gfc_conv_array_parameter): Add size argument.  Call
1912         array_parameter_size if it is non-NULL.
1913         * trans-array.h (gfc_conv_array_parameter): Adjust prototype.
1914         * trans-expr.c (gfc_conv_function_call, gfc_trans_arrayfunc_assign):
1915         Adjust callers.
1916         * trans-intrinsic.c (gfc_conv_intrinsic_loc): Likewise.
1917         * trans-io.c (gfc_convert_array_to_string): Rewritten.
1918
1919 2009-05-13  Steven G. Kargl  <kargl@gcc.gnu.org>
1920
1921         * gfortran.h (gfc_code): Rename struct member expr to expr1.
1922         * openmp.c (resolve_omp_atomic): Update expr to expr1.
1923         * interface.c (gfc_extend_assign): Ditto.
1924         * trans-expr.c (gfc_conv_expr_reference, gfc_trans_assignment,
1925         gfc_trans_init_assign): Ditto.
1926         * dump-parse-tree.c (show_code_node): Ditto.
1927         * trans-openmp.c (gfc_trans_omp_atomic): Ditto.
1928         * trans-stmt.c ( gfc_trans_label_assign, gfc_trans_goto, gfc_trans_call,
1929         gfc_trans_return, gfc_trans_pause, gfc_trans_stop, gfc_trans_if_1,
1930         gfc_trans_arithmetic_if, gfc_trans_do_while, gfc_trans_integer_select,
1931         gfc_trans_logical_select, gfc_trans_character_select
1932         forall_make_variable_temp, check_forall_dependencies
1933         gfc_trans_forall_1, gfc_trans_where_2, gfc_trans_where_3
1934         gfc_trans_where, gfc_trans_allocate, gfc_trans_deallocate): Ditto.
1935         * io.c (match_io_element, gfc_match_inquire): Ditto.
1936         * resolve.c (resolve_typebound_call, resolve_ppc_call,
1937         resolve_allocate_expr, resolve_allocate_deallocate, resolve_select,
1938         resolve_transfer, resolve_where, gfc_resolve_assign_in_forall,
1939         gfc_resolve_blocks, resolve_code, build_init_assign): Ditto.
1940         * st.c (gfc_free_statement): Ditto.
1941         * match.c (gfc_match_assignment, gfc_match_pointer_assignment,
1942         match_arithmetic_if, gfc_match_if, gfc_match_elseif
1943         gfc_match_stopcode, gfc_match_assign, gfc_match_goto,
1944         gfc_match_nullify, match_typebound_call, gfc_match_call
1945         gfc_match_select, match_simple_where, gfc_match_where
1946         gfc_match_elsewhere, match_simple_forall, gfc_match_forall): Ditto.
1947         * trans-io.c (gfc_trans_transfer): Ditto.
1948         * parse.c (parse_where_block, parse_if_block): Ditto.
1949
1950 2009-05-13  Steven G. Kargl  <kargl@gcc.gnu.org>
1951
1952         * gfortran.h (gfc_code): Rename struct member label to label1.
1953         * dump-parse-tree.c (show_code_node): Update symbol.
1954         * trans-stmt.c (gfc_trans_label_assign, gfc_trans_goto,
1955         gfc_trans_arithmetic_if): Ditto.
1956         * resolve.c (gfc_resolve_blocks, resolve_code): Ditto.
1957         * match.c (match_arithmetic_if, gfc_match_if, gfc_reference_st_label,
1958         gfc_match_assign, gfc_match_goto): Ditto.
1959         * parse.c (parse_do_block): Ditto.
1960
1961 2009-05-13  Tobias Burnus  <burnus@net-b.de>
1962
1963         PR fortran/34153
1964         * gfortran.h (gfc_exec_op): Add EXEC_END_PROCEDURE.
1965         * dump-parse-tree.c (show_code_node): Use EXEC_END_PROCEDURE.
1966         * trans.c (gfc_trans_code): Ditto.
1967         * resolve.c (resolve_code): Ditto.
1968         * st.c (gfc_free_statement): Ditto.
1969         * parse.c (accept_statement): Ditto.
1970
1971 2009-05-12  Tobias Burnus  <burnus@net-b.de>
1972
1973         PR fortran/40110
1974         * decl.c (gfc_match_kind_spec): Turn C kind error into a warning.
1975
1976 2009-05-11  Steve Ellcey  <sje@cup.hp.com>
1977
1978         * resolve.c (check_host_association): Initialize tail.
1979
1980 2009-05-11  Janus Weil  <janus@gcc.gnu.org>
1981
1982         PR fortran/40089
1983         * resolve.c (resolve_fl_derived): Only return FAILURE if
1984         gfc_notify_std fails.
1985
1986 2009-05-10  Ian Lance Taylor  <iant@google.com>
1987
1988         * gfortran.h (enum gfc_omp_sched_kind): New enum, broken out of
1989         gfc_omp_clauses.
1990         (enum gfc_omp_default_sharing): Likewise.
1991         * module.c (enum gfc_rsym_state): New enum, broken out of
1992         pointer_info.
1993         (enum gfc_wsym_state): Likewise.
1994         * parse.c (enum state_order): New enum, broken out of st_state.
1995
1996 2009-05-10  Paul Thomas  <pault@gcc.gnu.org>
1997
1998         PR fortran/40018
1999         * trans-array.c (gfc_trans_array_constructor_value): Fold
2000         convert numeric constants.
2001         (gfc_build_constant_array_constructor): The same.
2002
2003 2009-05-10  Paul Thomas  <pault@gcc.gnu.org>
2004
2005         PR fortran/38863
2006         * trans-expr.c (gfc_conv_operator_assign): Remove function.
2007         * trans.h : Remove prototype for gfc_conv_operator_assign.
2008         * trans-stmt.c (gfc_conv_elemental_dependencies): Initialize
2009         derivde types with intent(out).
2010         (gfc_trans_call): Add mask, count1 and invert arguments. Add
2011         code to use mask for WHERE assignments.
2012         (gfc_trans_forall_1): Use new arguments for gfc_trans_call.
2013         (gfc_trans_where_assign): The gfc_symbol argument is replaced
2014         by the corresponding code. If this has a resolved_sym, then
2015         gfc_trans_call is called. The call to gfc_conv_operator_assign
2016         is removed.
2017         (gfc_trans_where_2): Change the last argument in the call to
2018         gfc_trans_where_assign.
2019         * trans-stmt.h : Modify prototype for gfc_trans_call.
2020         * trans.c (gfc_trans_code): Use new args for gfc_trans_call.
2021
2022 2009-05-08  Janus Weil  <janus@gcc.gnu.org>
2023
2024         PR fortran/39876
2025         * intrinsic.c (gfc_is_intrinsic): Do not add the EXTERNAL attribute if
2026         the symbol is a module procedure.
2027
2028 2009-05-08  Tobias Burnus  <burnus@net-b.de>
2029
2030         * invoke.texi: Add do/recursion to the -fcheck= summary.
2031
2032 2009-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2033
2034         PR fortran/38830
2035         * gfortran.texi: Document that we don't support variable FORMAT
2036         expressions.
2037
2038 2009-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2039
2040         PR fortran/39576
2041         * error.c (error_print): Add missing break statement.
2042
2043 2009-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2044
2045         PR fortran/36382
2046         * invoke.texi: Document that -fdollar-ok does not allow $ to be
2047         used in IMPLICIT statement.
2048
2049 2009-05-06  Janus Weil  <janus@gcc.gnu.org>
2050             Paul Thomas  <pault@gcc.gnu.org>
2051
2052         PR fortran/39630
2053         * decl.c (match_procedure_interface): New function to match the
2054         interface for a PROCEDURE statement.
2055         (match_procedure_decl): Call match_procedure_interface.
2056         (match_ppc_decl): New function to match the declaration of a
2057         procedure pointer component.
2058         (gfc_match_procedure):  Call match_ppc_decl.
2059         (match_binding_attributes): Add new argument 'ppc' and handle the
2060         POINTER attribute for procedure pointer components.
2061         (match_procedure_in_type,gfc_match_generic): Added new argument to
2062         match_binding_attributes.
2063         * dump-parse-tree.c (show_expr,show_components,show_code_node): Handle
2064         procedure pointer components.
2065         * expr.c (free_expr0,gfc_copy_expr,gfc_simplify_expr): Handle EXPR_PPC.
2066         (gfc_check_pointer_assign): Handle procedure pointer components, but no
2067         full checking yet.
2068         (is_proc_ptr_comp): New function to determine if an expression is a
2069         procedure pointer component.
2070         * gfortran.h (expr_t): Add EXPR_PPC.
2071         (symbol_attribute): Add new member 'proc_pointer_comp'.
2072         (gfc_component): Add new member 'formal'.
2073         (gfc_exec_op): Add EXEC_CALL_PPC.
2074         (gfc_get_default_type): Changed first argument.
2075         (is_proc_ptr_comp): Add prototype.
2076         (gfc_match_varspec): Add new argument.
2077         * interface.c (compare_actual_formal): Handle procedure pointer
2078         components.
2079         * match.c (gfc_match_pointer_assignment,match_typebound_call): Handle
2080         procedure pointer components.
2081         * module.c (mio_expr): Handle EXPR_PPC.
2082         * parse.c (parse_derived): Handle procedure pointer components.
2083         * primary.c (gfc_match_varspec): Add new argument 'ppc_arg' and handle
2084         procedure pointer components.
2085         (gfc_variable_attr): Handle procedure pointer components.
2086         (gfc_match_rvalue): Added new argument to gfc_match_varspec and changed
2087         first argument of gfc_get_default_type.
2088         (match_variable): Added new argument to gfc_match_varspec.
2089         * resolve.c (resolve_entries,set_type,resolve_fl_parameter): Changed
2090         first argument of gfc_get_default_type.
2091         (resolve_structure_cons,resolve_actual_arglist): Handle procedure
2092         pointer components.
2093         (resolve_ppc_call): New function to resolve a call to a procedure
2094         pointer component (subroutine).
2095         (resolve_expr_ppc): New function to resolve a call to a procedure
2096         pointer component (function).
2097         (gfc_resolve_expr): Handle EXPR_PPC.
2098         (resolve_code): Handle EXEC_CALL_PPC.
2099         (resolve_fl_derived): Copy the interface for a procedure pointer
2100         component.
2101         (resolve_symbol): Fix overlong line.
2102         * st.c (gfc_free_statement): Handle EXEC_CALL_PPC.
2103         * symbol.c (gfc_get_default_type): Changed first argument.
2104         (gfc_set_default_type): Changed first argument of gfc_get_default_type.
2105         (gfc_add_component): Initialize ts.type to BT_UNKNOWN.
2106         * trans.h (gfc_conv_function_call): Renamed.
2107         * trans.c (gfc_trans_code): Handle EXEC_CALL_PPC.
2108         * trans-expr.c (gfc_conv_component_ref): Ditto.
2109         (gfc_conv_function_val): Rename to 'conv_function_val', add new
2110         argument 'expr' and handle procedure pointer components.
2111         (gfc_conv_operator_assign): Renamed gfc_conv_function_val.
2112         (gfc_apply_interface_mapping_to_expr): Handle EXPR_PPC.
2113         (gfc_conv_function_call): Rename to 'gfc_conv_procedure_call', add new
2114         argument 'expr' and handle procedure pointer components.
2115         (gfc_get_proc_ptr_comp): New function to get the backend decl for a
2116         procedure pointer component.
2117         (gfc_conv_function_expr): Renamed gfc_conv_function_call.
2118         (gfc_conv_structure): Handle procedure pointer components.
2119         * trans-intrinsic.c (gfc_conv_intrinsic_funcall,
2120         conv_generic_with_optional_char_arg): Renamed gfc_conv_function_call.
2121         * trans-stmt.h (gfc_get_proc_ptr_comp): Add prototype.
2122         * trans-stmt.c (gfc_trans_call): Renamed gfc_conv_function_call.
2123         * trans-types.h (gfc_get_ppc_type): Add prototype.
2124         * trans-types.c (gfc_get_ppc_type): New function to build a tree node
2125         for a procedure pointer component.
2126         (gfc_get_derived_type): Handle procedure pointer components.
2127
2128 2009-05-06  Tobias Burnus  <burnus@net-b.de>
2129
2130         PR fortran/40041
2131         * resolve.c (resolve_symbol): Print no warning for implicitly
2132         typed intrinsic functions.
2133
2134 2009-05-05  Janus Weil  <janus@gcc.gnu.org>
2135
2136         PR fortran/39998
2137         * expr.c (gfc_check_pointer_assign): Check for statement functions and
2138         internal procedures in procedure pointer assignments.
2139
2140 2009-04-28  Janus Weil  <janus@gcc.gnu.org>
2141
2142         PR fortran/39946
2143         * resolve.c (resolve_symbol): Correctly copy the interface of a
2144         PROCEDURE statement if the interface involves a RESULT variable.
2145
2146 2009-04-28  Janus Weil  <janus@gcc.gnu.org>
2147
2148         PR fortran/39930
2149         PR fortran/39931
2150         * expr.c (gfc_check_pointer_assign): Correctly detect if the left hand
2151         side is a pointer.
2152         * parse.c (gfc_fixup_sibling_symbols): Don't check for ambiguity.
2153
2154 2009-04-28  Paul Thomas  <pault@gcc.gnu.org>
2155
2156         PR fortran/39879
2157         * trans_expr.c (gfc_conv_procedure_call): Deep copy a derived
2158         type parentheses argument if it is a variable with allocatable
2159         components.
2160
2161 2009-04-27  Ian Lance Taylor  <iant@google.com>
2162
2163         * trans-intrinsic.c (DEFINE_MATH_BUILTIN): Add casts to enum
2164         type.
2165         * trans-io.c (st_parameter_field): Add casts to enum type.
2166
2167 2009-04-26  Steven G. Kargl  <kargl@gcc.gnu.org>
2168
2169         PR fortran/39893
2170         fortran/data.c (gfc_assign_data_value): If the lvalue is an 
2171         assumed character length entity in a data statement, then 
2172         return FAILURE to prevent segmentation fault.
2173
2174 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
2175
2176         * trans-decl.c: Include pointer-set.h.
2177         (nonlocal_dummy_decl_pset, tree nonlocal_dummy_decls): New variables.
2178         (gfc_nonlocal_dummy_array_decl): New function.
2179         (gfc_get_symbol_decl): Call it for non-local dummy args with saved
2180         descriptor.
2181         (gfc_get_symbol_decl): Set DECL_BY_REFERENCE when needed.
2182         (gfc_generate_function_code): Initialize nonlocal_dummy_decl{s,_pset},
2183         chain it to outermost block's vars, destroy it afterwards.
2184         * Make-lang.in (trans-decl.o): Depend on pointer-set.h.
2185
2186 2009-04-25  Janus Weil  <janus@gcc.gnu.org>
2187
2188         PR fortran/39688
2189         * decl.c (gfc_match_import): Use 'sym->name' instead of 'name'.
2190         They differ if the symbol has been use-renamed.
2191
2192 2009-04-24  Ian Lance Taylor  <iant@google.com>
2193
2194         * gfortran.h (enum gfc_symbol_type): New named enum type, broken
2195         out of struct gfc_symbol.
2196         (struct gfc_symbol): Use enum gfc_symbol_type.
2197         (enum gfc_array_ref_dimen_type): New named enum type, broken out
2198         of struct gfc_array_ref).
2199         (struct gfc_array_ref): Use enum gfc_array_ref_dimen_type.
2200         (mod_pointee_as): Update declaration.
2201         * decl.c (add_global_entry): Change type to enum gfc_symbol_type.
2202         (gfc_mod_pointee_as): Change return type to "match".
2203         * module.c (mio_array_ref): Add cast to enum type.
2204         (mio_symbol): Likewise.
2205         * resolve.c (resolve_global_procedure): Change type to enum
2206         gfc_symbol_type.
2207         * trans-io.c (gfc_build_st_parameter): Change type to unsigned
2208         int.
2209
2210 2009-04-24  Daniel Kraft  <d@domob.eu>
2211
2212         * gfortran.h (gfc_get_typebound_proc): Removed as macro, now a function.
2213         (struct gfc_symtree): Moved "typebound" member inside union.
2214         (struct gfc_namespace): Add "tb_sym_root" as new symtree to sort out
2215         type-bound procedures there.
2216         (gfc_get_tbp_symtree): New procedure.
2217         * symbol.c (tentative_tbp_list): New global.
2218         (gfc_get_namespace): NULL new "tb_sym_root" member.
2219         (gfc_new_symtree): Removed initialization of "typebound" member.
2220         (gfc_undo_symbols): Process list of tentative tbp's.
2221         (gfc_commit_symbols): Ditto.
2222         (free_tb_tree): New method.
2223         (gfc_free_namespace): Call it.
2224         (gfc_get_typebound_proc): New method.
2225         (gfc_get_tbp_symtree): New method.
2226         (gfc_find_typebound_proc): Adapt to structural changes of gfc_symtree
2227         and gfc_namespace with regards to tbp's.
2228         * dump-parse-tree.c (show_typebound): Ditto.
2229         * primary.c (gfc_match_varspec): Ditto.  Don't reference tbp-symbol
2230         as it isn't a symbol any longer.
2231         * module.c (mio_typebound_symtree): Adapt to changes.
2232         (mio_typebound_proc): Ditto, create symtrees using "gfc_get_tbp_symtree"
2233         rather than "gfc_get_sym_tree".
2234         (mio_f2k_derived): Ditto.
2235         * decl.c (match_procedure_in_type): Ditto.
2236         (gfc_match_generic): Ditto.  Don't reference tbp-symbol.
2237         * resolve.c (check_typebound_override): Adapt to changes.
2238         (resolve_typebound_generic): Ditto.
2239         (resolve_typebound_procedures): Ditto.
2240         (ensure_not_abstract_walker): Ditto.
2241         (ensure_not_abstract): Ditto.
2242         (resolve_typebound_procedure): Ditto, ignore erraneous symbols (for
2243         instance, through removed tentative ones).
2244         * gfc-internals.texi (Type-bound procedures): Document changes.
2245
2246 2009-04-24  Janus Weil  <janus@gcc.gnu.org>
2247
2248         PR fortran/39861
2249         PR fortran/39864
2250         * symbol.c (gfc_copy_formal_args_intr): Set attr.flavor and attr.dummy
2251         for the formal arguments.
2252
2253 2009-04-21  Taras Glek <tglek@mozilla.com>
2254
2255         * f95-lang.c: Update GTY annotations to new syntax.
2256         * trans-intrinsic.c: Likewise.
2257         * trans-io.c: Likewise.
2258         * trans.h: Likewise.
2259
2260 2009-04-22  Janus Weil  <janus@gcc.gnu.org>
2261
2262         PR fortran/39735
2263         * decl.c (add_hidden_procptr_result): Bugfix for procptr results.
2264         (match_procedure_decl): Set if_source.
2265         * expr.c (gfc_check_pointer_assign): Bugfix: Return after error.
2266         And: Check interface also for IFSRC_UNKNOWN (return type may be known).
2267         * gfortran.h (typedef enum ifsrc): Remove IFSRC_USAGE,
2268         add documentation. Rename copy_formal_args and copy_formal_args_intr.
2269         * interface.c (gfc_compare_interfaces): Check for return types,
2270         handle IFSRC_UNKNOWN.
2271         (compare_intr_interfaces,compare_actual_formal_intr): Obsolete, removed.
2272         (gfc_procedure_use): Modified handling of intrinsics.
2273         * intrinsic.c (add_functions): Bugfix for "dim".
2274         * resolve.c (resolve_intrinsic): New function to resolve intrinsics,
2275         which copies the interface from isym to sym.
2276         (resolve_procedure_expression,resolve_function): Use new function
2277         'resolve_intrinsic'.
2278         (resolve_symbol): Add function attribute for externals with return type
2279         and use new function 'resolve_intrinsic'.
2280         * symbol.c (ifsrc_types): Remove string for IFSRC_USAGE.
2281         (copy_formal_args): Renamed to gfc_copy_formal_args.
2282         (copy_formal_args_intr): Renamed to gfc_copy_formal_args_intr.
2283         * trans-const.c (gfc_conv_const_charlen): Handle cl==NULL.
2284
2285 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
2286
2287         * ChangeLog, ChangeLog-2002, ChangeLog-2003, ChangeLog-2004,
2288         ChangeLog-2005, ChangeLog-2006, ChangeLog-2007, ChangeLog-2008,
2289         ChangeLog.ptr, config-lang.in, ioparm.def, mathbuiltins.def: Add
2290         copyright and license notices.
2291         * ChangeLog, ChangeLog-2005, ChangeLog-2006, ChangeLog-2007,
2292         ChangeLog-2008: Correct dates.
2293
2294 2009-04-20  Tobias Burnus  <burnus@net-b.de>
2295
2296         PR fortran/39811
2297         * scanner.c (load_line): Fix bogus "&" compile-time diagnostic.
2298
2299 2009-04-20  Paul Thomas  <pault@gcc.gnu.org>
2300
2301         PR fortran/39800
2302         * resolve.c (is_sym_host_assoc): New function.
2303         (resolve_fl_derived): Call it when checking PRIVATE components
2304         of PUBLIC derived types.  Change gfc_error to a gfc_notify_std
2305         with std=f2003.
2306         (resolve_fl_namelist): Call it twice to check for host
2307         association.
2308
2309 2009-04-20  Ian Lance Taylor  <iant@google.com>
2310
2311         * module.c (import_iso_c_binding_module): Add casts to enum type.
2312         * trans-intrinsic.c (gfc_conv_intrinsic_minmax): Change op to enum
2313         tree_code.
2314         (gfc_conv_intrinsic_anyall): Likewise.
2315         (gfc_conv_intrinsic_arith): Likewise.
2316         (gfc_conv_intrinsic_minmaxloc): Likewise.
2317         (gfc_conv_intrinsic_minmaxval): Likewise.
2318         (gfc_conv_intrinsic_bitop): Likewise.
2319         (gfc_conv_intrinsic_singlebitop): Likewise.
2320         (gfc_conv_intrinsic_strcmp): Likewise.
2321
2322 2009-04-20  Vasilis Liaskovitis  <vliaskov@gmail.com>
2323             Jakub Jelinek  <jakub@redhat.com>
2324
2325         PR fortran/35423
2326         * trans.h (OMPWS_WORKSHARE_FLAG, OMPWS_CURR_SINGLEUNIT,
2327         OMPWS_SCALARIZER_WS, OMPWS_NOWAIT): Define.
2328         (ompws_flags): New extern decl.
2329         * trans-array.c (gfc_trans_scalarized_loop_end): Build OMP_FOR
2330         for the outer dimension if ompws_flags allow it.
2331         * trans.c (gfc_generate_code): Clear ompws_flags.
2332         * trans-expr.c (gfc_trans_assignment_1): Allow worksharing
2333         array assignments inside of !$omp workshare.
2334         * trans-stmt.c (gfc_trans_where_3): Similarly for where statements
2335         and constructs.
2336         * trans-openmp.c (ompws_flags): New variable.
2337         (gfc_trans_omp_workshare): Rewritten.
2338
2339 2009-04-11  Daniel Kraft  <d@domob.eu>
2340
2341         PR fortran/37746
2342         * gfortran.h (struct gfc_charlen): New field "passed_length" to store
2343         the actual passed string length for dummy arguments.
2344         * trans-decl.c (gfc_create_string_length): Formatting fixes and added
2345         assertion, moved a local variable into the innermost block it is needed.
2346         (create_function_arglist): Removed TODO about the check being
2347         implemented and initialize cl->passed_length here.
2348         (add_argument_checking): New method.
2349         (gfc_generate_function_code): Call the argument checking method.
2350
2351 2009-04-11  Janus Weil  <janus@gcc.gnu.org>
2352
2353         PR fortran/39692
2354         * symbol.c (check_conflict): Reject procedure pointers for -std=f95.
2355
2356 2009-04-11  Daniel Franke  <franke.daniel@gmail.com>
2357
2358         * resolve.c (resolve_global_procedure): Enable whole-file checking for
2359         procedures that are declared later in the file.
2360         
2361 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
2362
2363         PR middle-end/39701
2364         * trans.c (gfc_allocate_with_status): Fix type mismatches
2365         on "pstat == 0".
2366
2367 2009-04-10  Daniel Franke  <franke.daniel@gmail.com>
2368
2369         PR fortran/38709
2370         * expr.c (find_array_section): Leave early on zero-sized arrays.
2371
2372 2009-04-09  Janus Weil  <janus@gcc.gnu.org>
2373
2374         PR fortran/36704
2375         * decl.c (add_hidden_procptr_result): New function for handling
2376         procedure pointer return values by adding a hidden result variable.
2377         (variable_decl,match_procedure_decl,gfc_match_function_decl,
2378         gfc_match_subroutine,gfc_match_end,attr_decl1): Handle procedure pointer
2379         return values.
2380         * parse.c (parse_interface): Add EXTERNAL attribute only after
2381         FUNCTION/SUBROUTINE declaration is complete.
2382         * primary.c (replace_hidden_procptr_result): New function for replacing
2383         function symbol by hidden result variable.
2384         (gfc_match_rvalue,match_variable): Replace symbol by hidden result
2385         variable.
2386         * resolve.c (resolve_contained_fntype,resolve_function,resolve_variable,
2387         resolve_symbol): Allow for procedure pointer function results.
2388         (resolve_fl_procedure): Conflict detection moved here from
2389         'check_conflict'.
2390         * symbol.c (gfc_check_function_type): Allow for procedure pointer
2391         function results.
2392         (check_conflict): Move some conflict detection to resolution stage.
2393         * trans-types.c (gfc_sym_type,gfc_get_function_type): Handle hidden
2394         result variables.
2395
2396 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
2397
2398         * trans-types.c (gfc_init_types): Ensure gfc_integer_types doesn't
2399         contain TYPE_STRING_FLAG types.
2400
2401 2009-04-08  Janne Blomqvist  <jb@gcc.gnu.org>
2402
2403         PR fortran/39670
2404         * invoke.texi (fdollar-ok): Fix typo.
2405         
2406 2009-04-08  Daniel Franke  <franke.daniel@gmail.com>
2407
2408         PR fortran/39670
2409         * invoke.texi (fdollar-ok): Clarify limitations.
2410
2411 2009-04-08  Paul Thomas  <pault@gcc.gnu.org>
2412
2413         PR fortran/38863
2414         * trans-array.c (gfc_trans_deferred_array): Return if this
2415         is a result variable.
2416
2417 2009-04-07  Janus Weil  <janus@gcc.gnu.org>
2418
2419         PR fortran/38152
2420         * trans-decl.c (gfc_get_symbol_decl): Correctly set decl location for
2421         procedure pointer decls.
2422
2423 2009-04-07  Janus Weil  <janus@gcc.gnu.org>
2424
2425         PR fortran/38290
2426         * expr.c (gfc_check_pointer_assign): Enable interface check for
2427         procedure pointers.
2428         * gfortran.h: Add copy_formal_args_intr.
2429         * interface.c (gfc_compare_interfaces): Call gfc_compare_intr_interfaces
2430         if second argument is an intrinsic.
2431         (compare_intr_interfaces): Correctly set attr.function, attr.subroutine
2432         and ts.
2433         (compare_parameter): Call gfc_compare_interfaces also for intrinsics.
2434         * resolve.c (resolve_specific_f0,resolve_specific_s0): Don't resolve
2435         intrinsic interfaces here. Must happen earlier.
2436         (resolve_symbol): Resolution of intrinsic interfaces moved here from
2437         resolve_specific_..., and formal args are now copied from intrinsic
2438         interfaces.
2439         * symbol.c (copy_formal_args_intr): New function to copy the formal
2440         arguments from an intinsic procedure.
2441
2442 2009-04-06  Paul Thomas  <pault@gcc.gnu.org>
2443
2444         PR fortran/38863
2445         * dependency.c (ref_same_as_full_array): New function.
2446         (gfc_dep_resolver): Call it.
2447
2448 2009-04-06  Janus Weil  <janus@gcc.gnu.org>
2449
2450         PR fortran/39414
2451         * decl.c (match_procedure_decl): Fix double declaration problems with
2452         PROCEDURE statements.
2453         * symbol.c (gfc_add_type): Ditto.
2454
2455 2009-04-06  Paul Thomas  <pault@gcc.gnu.org>
2456
2457         PR fortran/36091
2458         * trans-array.c (gfc_conv_array_ref): If the symbol has the
2459         temporary attribute use the array_spec for the bounds.
2460         * gfortran.h : Add the temporary field to the structure
2461         'symbol_attribute'.
2462         * trans-stmt.c (forall_make_variable_temp): Set the symbol's
2463         temporary attribute.
2464
2465 2009-04-05  Daniel Franke  <franke.daniel@gmail.com>
2466
2467         PR fortran/29458
2468         * trans-array.c (gfc_trans_array_constructor_value): Shadow
2469         implied do-loop variable to avoid spurious middle-end warnings.
2470
2471 2009-04-04  Tobias Burnus  <burnus@net-b.de>
2472
2473         PR fortran/39577
2474         * trans-decl.c (gfc_generate_function_code): Move recursive
2475         check to the right position.
2476
2477 2009-04-04  Paul Thomas  <pault@gcc.gnu.org>
2478
2479         PR fortran/37614
2480         * trans-common.c (translate_common): Do not offset the whole
2481         coomon block.
2482
2483 2009-04-03  Tobias Burnus  <burnus@net-b.de>
2484
2485         PR fortran/39594
2486         * resolve.c (resolve_common_vars): Add FL_VARIABLE to symbol
2487         if it is not a procedure pointer.
2488         * primary.c (match_actual_arg): Ditto.
2489
2490 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
2491
2492         PR preprocessor/15638
2493         * cpp.c (cb_cpp_error): Handle CPP_DL_FATAL.
2494
2495 2009-03-30  Steven G. Kargl  <kargls@comcast.net>
2496
2497         PR fortran/38389
2498         * trans-stmt.c(gfc_trans_allocate): Add translation of ERRMSG.
2499         (gfc_trans_deallocate): Add translation of ERRMSG.  Remove stale
2500         comments.  Minor whitespace cleanup.
2501         * resolve.c(is_scalar_expr_ptr): Whitespace cleanup.
2502         (resolve_deallocate_expr (gfc_expr *e): Update error message.
2503         (resolve_allocate_expr):  Remove dead code.  Update error message.
2504         Move error checking to ...
2505         (resolve_allocate_deallocate): ... here.  Add additional error
2506         checking for STAT, ERRMSG, and allocate-objects.
2507         * match.c(gfc_match_allocate,gfc_match_deallocate):  Parse ERRMSG.
2508         Check for redundant uses of STAT and ERRMSG.  Reword error message
2509         and add checking for pointer, allocatable, and proc_pointer attributes.
2510
2511 2009-03-30  Paul Thomas  <pault@gcc.gnu.org>
2512
2513         PR fortran/22571
2514         PR fortran/26227
2515         PR fortran/24886
2516         * symbol.c : Add gfc_global_ns_list.
2517         * decl.c (add_global_entry): Set the namespace ('ns') field.
2518         * gfortran.h : Add the resolved field to gfc_namespace. Add the
2519         namespace ('ns') field to gfc_gsymbol.  Add flag_whole_file to
2520         gfc_option_t.  Add the prototype for gfc_free_dt_list.
2521         * lang.opt : Add the whole-file option.
2522         * invoke.texi : Document the whole-file option.
2523         * resolve.c (resolve_global_procedure): If the fwhole-file
2524         option is set, reorder gsymbols to ensure that translation is
2525         in the right order.  Resolve the gsymbol's namespace if that
2526         has not occurred and then check interfaces.
2527         (resolve_function): Move call to resolve_global_procedure.
2528         (resolve_call): The same.
2529         (resolve_codes): Store the current labels_obstack.
2530         (gfc_resolve) : Return if the namespace is already resolved.
2531         trans-decl.c (gfc_get_extern_function_decl): If the whole_file
2532         option is selected, use the backend_decl of a gsymbol, if it is
2533         available.
2534         parse.c (add_global_procedure, add_global_program): If the flag
2535         whole-file is set, add the namespace to the gsymbol.
2536         (gfc_parse_file): On -fwhole-file, put procedure namespaces on
2537         the global namespace list.  Rearrange to do resolution of all
2538         the procedures in a file, followed by their translation.
2539         * options.c (gfc_init_options): Add -fwhole-file.
2540         (gfc_handle_option): The same.
2541
2542 2009-03-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2543
2544         * f95-lang.c (gfc_init_builtin_functions): Define BUILT_IN_HUGE_VAL
2545         family of intrinsics instead of BUILT_IN_INF family.
2546         * trans-intrinsics.c (gfc_conv_intrinsic_nearest): Use
2547         BUILT_IN_HUGE_VAL instead of BUILT_IN_INF.
2548
2549 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
2550
2551         * trans-types.c (gfc_sym_type, gfc_return_by_reference): For
2552         sym->attr.result check sym->ns->proc_name->attr.is_bind_c.
2553
2554 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
2555
2556         PR rtl-optimization/323
2557         * options.c (gfc_post_options): Set
2558         flag_excess_precision_cmdline.  Give an error for
2559         -fexcess-precision=standard for processors where the option is
2560         significant.
2561
2562 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
2563
2564         PR preprocessor/34695
2565         * cpp.c (cb_cpp_error): New.
2566         (gfc_cpp_post_options): Don't set cpp_option->inhibit_warnings.
2567         Don't check cpp_errors (cpp_in).
2568         (gfc_cpp_init_0): Set cb->error.
2569
2570 2009-03-29  Steven G. Kargl  <kargl@gcc.gnu.org>
2571
2572         PR fortran/38823
2573         * gfortran.h: Add ARITH_PROHIBIT to arith enum.
2574         expr.c (gfc_match_init_expr): Add global variable init_flag to
2575         flag matching an initialization expression.
2576         (check_intrinsic_op): Move no longer reachable error message to ...
2577         * arith.c (arith_power): ... here.  Remove gfc_ prefix in
2578         gfc_arith_power.  Use init_flag.  Allow constant folding of x**y
2579         when y is REAL or COMPLEX.
2580         (eval_intrinsic): Remove restriction that y in x**y must be INTEGER
2581         for constant folding.
2582         * gfc_power: Update gfc_arith_power to arith_power
2583
2584 2009-03-29  Daniel Kraft  <d@domob.eu>
2585
2586         PR fortran/37423
2587         * gfortran.h (struct gfc_typebound_proc): Added new flag "deferred" and
2588         added a comment explaining DEFERRED binding handling.
2589         * decl.c (match_binding_attributes): Really match DEFERRED attribute.
2590         (match_procedure_in_type): Really match PROCEDURE(interface) syntax
2591         and do some validity checks for DEFERRED and this construct.
2592         * module.c (binding_overriding): New string constant for DEFERRED.
2593         (mio_typebound_proc): Module-IO DEFERRED flag.
2594         * resolve.c (check_typebound_override): Ensure that a non-DEFERRED
2595         binding is not overridden by a DEFERRED one.
2596         (resolve_typebound_procedure): Allow abstract interfaces as targets
2597         for DEFERRED bindings.
2598         (ensure_not_abstract_walker), (ensure_not_abstract): New methods.
2599         (resolve_fl_derived): Use new "ensure_not_abstract" method for
2600         non-ABSTRACT types extending ABSTRACT ones to ensure each DEFERRED
2601         binding is overridden.
2602         (check_typebound_baseobject): New method.
2603         (resolve_compcall), (resolve_typebound_call): Check base-object of
2604         the type-bound procedure call.
2605         * gfc-internals.texi (Type-bound procedures): Document a little bit
2606         about internal handling of DEFERRED bindings.
2607
2608 2009-03-29  Tobias Schlüter  <tobi@gcc.gnu.org>
2609
2610         PR fortran/38507
2611         * gfortran.h (gfc_st_label): Fix comment.
2612         (gfc_exec_op): Add statement code EXEC_END_BLOCK for end of block.
2613         * parse.c (accept_statement): Use EXEC_END_BLOCK for END IF and
2614         END SELECT with labels.
2615         (check_do_closure): Fix formatting.
2616         (parse_do_block): Fix typo in error message.
2617         * resolve.c (code_stack): Remove tail member.  Update comment to
2618         new use of reachable_labels.
2619         (reachable_labels): Rename to ...
2620         (find_reachable_labels): ... this.  Overhaul.  Update preceding
2621         comment.
2622         (resolve_branch): Fix comment preceding function.  Rewrite.
2623         (resolve_code): Update call to find_reachable_labels.  Add code to
2624         deal with EXEC_END_BLOCK.
2625         * st.c (gfc_free_statement): Add code to deal with EXEC_END_BLOCK.
2626         Add 2009 to copyright years.
2627         * trans.c (gfc_trans_code): Likewise on both counts.
2628
2629 2009-03-31  Paul Thomas  <pault@gcc.gnu.org>
2630
2631         PR fortran/38917
2632         * expr.c (gfc_check_assign): Allow pointer components when
2633         checking for NULL.
2634
2635         PR fortran/38918
2636         * resolve.c (check_data_variable): Treat pointer arrays with
2637         scalars.
2638
2639 2009-03-31  Paul Thomas  <pault@gcc.gnu.org>
2640
2641         PR fortran/38915
2642         * trans-expr.c (gfc_trans_assignment_1): Ensure temporaries
2643         have a string_length.
2644
2645 2009-03-28  Tobias Burnus  <burnus@net-b.de>
2646
2647         PR fortran/34656
2648         * trans-stmt.c (gfc_trans_simple_do, gfc_trans_do):
2649         Add GFC_RTCHECK_DO support.
2650         * option.c (gfc_handle_runtime_check_option): Enable GFC_RTCHECK_DO.
2651         * invoke.texi (-fcheck): Document "do" option.
2652
2653 2009-03-28  Paul Thomas  <pault@gcc.gnu.org>
2654
2655         PR fortran/38538
2656         * trans-array.c (get_elemental_fcn_charlen): Remove.
2657         (get_array_charlen): New function to replace previous.
2658
2659 2009-03-28  Paul Thomas  <pault@gcc.gnu.org>
2660
2661         PR fortran/38765
2662         * parse.c (parse_derived): Do not break on finding pointer,
2663         allocatable or private components.
2664
2665 2009-03-28  Tobias Burnus  <burnus@net-b.de>
2666
2667         PR fortran/32626
2668         * option.c (gfc_handle_runtime_check_option): Enable recursion check.
2669         * trans-decl.c (gfc_generate_function_code): Add recursion check.
2670         * invoke.texi (-fcheck): Add recursive option.
2671
2672 2009-03-28  Tobias Burnus  <burnus@net-b.de>
2673
2674         PR fortran/38432
2675         * resolve.c (gfc_resolve_iterator): Add zero-loop warning.
2676
2677 2009-03-28  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2678             Paul Thomas  <pault@gcc.gnu.org>
2679             Tobias Burnus  <burnus@net-b.de>
2680
2681         * gfortran.h (gfc_option_t): Add rtcheck.
2682         * lang.opt: New option -fcheck.
2683         * libgfortran.h: Add GFC_RTCHECK_* constants.
2684         * invoke.texi: Document -fcheck.
2685         * options.c (gfc_handle_runtime_check_option): New function.
2686         (gfc_init_options,gfc_post_options,gfc_handle_option):
2687         Add -fcheck option.
2688
2689 2009-03-27  Richard Guenther  <rguenther@suse.de>
2690
2691         * trans-array.c (gfc_conv_descriptor_data_addr): Use
2692         gfc_build_addr_expr instead of build_fold_addr_expr.
2693         (gfc_trans_allocate_array_storage, gfc_trans_array_constructor_value,
2694         gfc_trans_constant_array_constructor, gfc_conv_array_data,
2695         gfc_conv_expr_descriptor, gfc_conv_array_parameter): Likewise.
2696         * trans-expr.c (gfc_conv_missing_dummy, gfc_conv_variable,
2697         gfc_conv_function_val, gfc_conv_operator_assign,
2698         gfc_conv_subref_array_arg, gfc_conv_function_call,
2699         gfc_conv_expr_reference, gfc_trans_scalar_assign): Likewise.
2700         * trans-intrinsic.c (gfc_conv_intrinsic_exponent,
2701         gfc_conv_intrinsic_ctime, gfc_conv_intrinsic_fdate,
2702         gfc_conv_intrinsic_ttynam, gfc_conv_intrinsic_minmax_char,
2703         gfc_conv_intrinsic_fraction, gfc_conv_intrinsic_spacing,
2704         gfc_conv_intrinsic_rrspacing, gfc_conv_intrinsic_set_exponent,
2705         gfc_conv_intrinsic_array_transfer, gfc_conv_intrinsic_transfer,
2706         gfc_conv_intrinsic_si_kind, gfc_conv_intrinsic_trim): Likewise.
2707         * trans-io.c (gfc_trans_io_runtime_check, set_parameter_ref,
2708         gfc_convert_array_to_string, gfc_trans_open, gfc_trans_close,
2709         build_filepos, gfc_trans_inquire, gfc_trans_wait,
2710         nml_get_addr_expr, transfer_namelist_element, build_dt,
2711         gfc_trans_dt_end, transfer_array_component, transfer_expr,
2712         transfer_array_desc, gfc_trans_transfer): Likewise.
2713         * trans-stmt.c (gfc_trans_allocate, gfc_trans_deallocate): Likewise.
2714         * trans.c (gfc_build_addr_expr): Mark the base of the address
2715         TREE_ADDRESSABLE.
2716
2717 2009-03-27  Tobias Burnus  <burnus@net-b.de>
2718
2719         * gfortran.h (enum init_local_real.): Add GFC_INIT_REAL_SNAN.
2720         (gfc_expr): Add is_snan.
2721         * trans-const.c (gfc_conv_mpfr_to_tree): Support SNaN.
2722         (gfc_conv_constant_to_tree): Update call to gfc_conv_mpfr_to_tree.
2723         * trans-const.h (gfc_conv_mpfr_to_tree): Update prototype.
2724         * resolve.c (build_default_init_expr): Update call.
2725         * target-memory.c (encode_float): Ditto.
2726         * trans-intrinsic.c (gfc_conv_intrinsic_aint,gfc_conv_intrinsic_mod,
2727
2728 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2729
2730         * lang.opt: Unify help texts for -I, -Wconversion, -d, -fopenmp,
2731         and -fpreprocessed.
2732
2733 2009-03-06  Alexandre Oliva <aoliva@redhat.com>
2734
2735         * simplify.c (gfc_simplify_transfer): Zero-initialize the
2736         buffer.
2737
2738 2009-02-27  Tobias Burnus  <burnus@net-b.de>
2739
2740         PR fortran/39309
2741         * module.c (read_md5_from_module_file): Add missing quote.
2742
2743 2009-02-27  Tobias Burnus  <burnus@net-b.de>
2744
2745         PR fortran/39309
2746         * module.c (read_md5_from_module_file): Include mod version
2747         in had-changed test.
2748
2749 2009-02-26  Paul Thomas  <pault@gcc.gnu.org>
2750
2751         PR fortran/39295
2752         * interface.c (compare_type_rank_if): Return 1 if the symbols
2753         are the same and deal with external procedures where one is
2754         identified to be a function or subroutine by usage but the
2755         other is not.
2756
2757 2009-02-26  Paul Thomas  <pault@gcc.gnu.org>
2758
2759         PR fortran/39292
2760         * trans-array.c (gfc_conv_array_initializer): Convert all
2761         expressions rather than ICEing.
2762
2763 2009-02-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
2764
2765         PR fortran/38914
2766         * array.c (ref_dimen_size):  Rename to gfc_ref_dimen_size,
2767         make global.  Change function name in error messages.
2768         (ref_size):  Change ref_dimen_size to gfc_ref_dimen_size.
2769         (gfc_array_ref_shape):  Likewise.
2770         * gfortran.h:  Add prototype for gfc_ref_dimen_size.
2771         * simplify.c (simplify_bound_dim):  Add ref argument.
2772         If the reference isn't a full array, return one for
2773         the lower bound and the extent for the upper bound.
2774         (simplify_bound):  For array sections, take as from the
2775         argument.  Add reference to all to simplify_bound_dim.
2776
2777 2009-02-19  Daniel Franke  <franke.daniel@gmail.com>
2778
2779         * scanner.c (load_line): At end of line, skip '\r' without setting
2780         the truncation flag.
2781
2782 2009-02-18  Daniel Kraft  <d@domob.eu>
2783
2784         * gfortran.texi: New chapter about compiler characteristics.
2785         (Compiler Characteristics): Document KIND type parameters here.
2786
2787 2009-02-18  Tobias Burnus  <burnus@net-b.de>
2788
2789         * intrinsic.texi (MALLOC): Make example more portable.
2790
2791 2009-02-13  Mikael Morin  <mikael.morin@tele2.fr>
2792
2793         PR fortran/38259
2794         * module.c (gfc_dump_module,gfc_use_module): Add module
2795         version number.
2796
2797 2009-02-13  Paul Thomas  <pault@gcc.gnu.org>
2798
2799         PR fortran/36703
2800         PR fortran/36528
2801         * trans-expr.c (gfc_conv_function_val): Stabilize Cray-pointer
2802         function references to ensure that a valid expression is used.
2803         (gfc_conv_function_call): Pass Cray pointers to procedures.
2804
2805 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
2806
2807         * gfortranspec.c (lang_specific_driver): Update copyright notice
2808         dates.
2809
2810 2009-01-28  Paul Thomas  <pault@gcc.gnu.org>
2811
2812         PR fortran/38852
2813         PR fortran/39006
2814         * trans-intrinsic.c (gfc_conv_intrinsic_bound): Use the array
2815         descriptor ubound for UBOUND, when the array lbound == 1.
2816
2817 2009-01-27  Daniel Kraft  <d@domob.eu>
2818
2819         PR fortran/38883
2820         * trans-stmt.c (gfc_conv_elemental_dependencies):  Create temporary
2821         for the real type needed to make it work for subcomponent-references.
2822
2823 2009-01-21  Daniel Kraft  <d@domob.eu>
2824
2825         * trans-stmt.c (gfc_conv_elemental_dependencies):  Cleaned up comment.
2826
2827 2009-01-20  Paul Thomas  <pault@gcc.gnu.org>
2828
2829         PR fortran/38907
2830         * resolve.c (check_host_association): Remove the matching to
2831         correct an incorrect host association and use manipulation of
2832         the expression instead.
2833
2834 2009-01-20  Tobias Burnus  <burnus@net-b.de>
2835
2836         * invoke.texi (RANGE): RANGE also takes INTEGER arguments.
2837
2838 2009-01-19  Mikael Morin  <mikael.morin@tele2.fr>
2839
2840         PR fortran/38859
2841         * simplify.c (simplify_bound): Don't use array specification
2842         if variable or component has subsequent references.
2843
2844 2009-01-17  Paul Thomas  <pault@gcc.gnu.org>
2845
2846         PR fortran/38657
2847         * module.c (write_common_0): Add argument 'this_module' and
2848         check that non-use associated common blocks are written first.
2849         (write_common): Call write_common_0 twice, once with true and
2850         then with false.
2851
2852 2009-01-17  Paul Thomas  <pault@gcc.gnu.org>
2853
2854         PR fortran/34955
2855         * trans-intrinsic.c (gfc_conv_intrinsic_array_transfer): Has
2856         been absorbed into gfc_conv_intrinsic_transfer. All
2857         references to it in trans-intrinsic.c have been changed
2858         accordingly.  PR fixed by using a temporary for scalar
2859         character transfer, when the source is shorter than the
2860         destination.
2861
2862 2009-01-17  Paul Thomas  <pault@gcc.gnu.org>
2863
2864         PR fortran/38657
2865         * module.c (write_common_0): Revert patch of 2009-01-05.
2866
2867 2009-01-16  Janus Weil  <janus@gcc.gnu.org>
2868
2869         PR fortran/38152
2870         * expr.c (gfc_check_pointer_assign): Allow use-associated procedure
2871         pointers as lvalue.
2872         * trans-decl.c (get_proc_pointer_decl,gfc_create_module_variable):
2873         Enable procedure pointers as module variables.
2874
2875 2009-01-14  Steven G. Kargl  <kargl@gcc.gnu.org>
2876
2877         * ChangeLog-2007: Clean out svn merge droppings.
2878
2879 2009-01-10  Paul Thomas  <pault@gcc.gnu.org>
2880
2881         PR fortran/38763
2882         * target-memory.c (encode_derived): Encode NULL.
2883
2884 2009-01-10  Paul Thomas  <pault@gcc.gnu.org>
2885
2886         PR fortran/38765
2887         * resolve.c (check_host_association): Use the symtree name to
2888         search for a potential contained procedure, since this is the
2889         name by which it would be referenced.
2890
2891 2009-01-06  Thomas Koenig  <tkoenig@gcc.gnu.org>
2892
2893         PR fortran/38220
2894         * interface.c (gfc_procedure_use):  Don't warn about functions
2895         from ISO_C_BINDING.
2896         * symbol.c (generate_isocbinding_symbol):  Mark c_loc and
2897         c_funloc as pure.
2898
2899 2009-01-05  Paul Thomas  <pault@gcc.gnu.org>
2900
2901         PR fortran/38657
2902         * module.c (write_common_0): Use the name of the symtree rather
2903         than the common block, to determine if the common has been
2904         written.
2905
2906 2009-01-05  Daniel Franke  <franke.daniel@gmail.com>
2907
2908         PR fortran/37159
2909         * check.c (gfc_check_random_seed): Added size check for GET
2910         dummy argument, reworded error messages to follow common pattern.
2911
2912 2009-01-05  Thomas Koenig  <tkoenig@gcc.gnu.org>
2913
2914         PR fortran/38672
2915         * trans-types.c (gfc_get_derived_type):  Check for the
2916         presence of derived->ns->proc_name before
2917         accessing derived->ns->proc_name->attr.flavor .
2918         * resolve.c (resolve_symbol):  Likewise.
2919
2920 2009-01-05  Paul Thomas  <pault@gcc.gnu.org>
2921
2922         PR fortran/38665
2923         * gfortran.h : Add bit to gfc_expr 'user_operator'
2924         * interface.c (gfc_extend_expr): Set the above if the operator
2925         is substituted by a function. 
2926         * resolve.c (check_host_association): Return if above is set.
2927
2928 2009-01-04  Mikael Morin  <mikael.morin@tele2.fr>
2929
2930         PR fortran/35681
2931         * ChangeLog-2008: Fix function name.
2932
2933         PR fortran/38487
2934         * dependency.c (gfc_check_argument_var_dependency):
2935         Move the check for pointerness inside the if block
2936         so that it doesn't affect the return value.
2937
2938         PR fortran/38669
2939         * trans-stmt.c (gfc_trans_call):
2940         Add the dependency code after the loop bounds calculation one.
2941
2942 2009-01-04  Daniel Franke  <franke.daniel@gmail.com>
2943
2944         * intrinsic.c (do_simplify): Removed already implemented TODO.
2945
2946 2009-01-04  Daniel Franke  <franke.daniel@gmail.com>
2947
2948         PR fortran/38718
2949         * simplify.c (gfc_simplify_merge): New.
2950         * intrinsic.h (gfc_simplify_merge): New prototype.
2951         * intrinsic.c (add_functions): Added simplification for MERGE.
2952
2953 2009-01-04  Mikael Morin  <mikael.morin@tele2.fr>
2954
2955         PR fortran/38536
2956         * gfortran.h (gfc_is_data_pointer): Added prototype
2957         * resolve.c (gfc_iso_c_func_interface):
2958         Use gfc_is_data_pointer to test for pointer attribute.
2959         * dependency.c (gfc_is_data_pointer):
2960         Support pointer-returning functions.
2961
2962 2009-01-03  Daniel Franke  <franke.daniel@gmail.com>
2963
2964         * symbol.c (save_symbol): Don't SAVE function results.
2965
2966 2009-01-03  Paul Thomas  <pault@gcc.gnu.org>
2967
2968         PR fortran/38594
2969         * resolve.c (resolve_call): When searching for proper host
2970         association, use symtree rather than symbol.  For everything
2971         except generic subroutines, substitute the symtree in the call
2972         rather than the symbol.
2973
2974 \f
2975 Copyright (C) 2009 Free Software Foundation, Inc.
2976
2977 Copying and distribution of this file, with or without modification,
2978 are permitted in any medium without royalty provided the copyright
2979 notice and this notice are preserved.