OSDN Git Service

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