summaryrefslogtreecommitdiffstats
path: root/gcc/fortran/resolve.c
Commit message (Collapse)AuthorAgeFilesLines
* fortran/burnus2009-09-301-69/+303
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2009-09-30 Janus Weil <janus@gcc.gnu.org> * check.c (gfc_check_same_type_as): New function for checking SAME_TYPE_AS and EXTENDS_TYPE_OF. * decl.c (encapsulate_class_symbol): Set ABSTRACT attribute for class container, if the contained type has it. Add an initializer for the class container. (add_init_expr_to_sym): Handle BT_CLASS. (vindex_counter): New counter for setting vindices. (gfc_match_derived_decl): Set vindex for all derived types, not only those which are being extended. * expr.c (gfc_check_assign_symbol): Handle NULL initialization of class pointers. * gfortran.h (gfc_isym_id): New values GFC_ISYM_SAME_TYPE_AS and GFC_ISYM_EXTENDS_TYPE_OF. (gfc_type_is_extensible): New prototype. * intrinsic.h (gfc_check_same_type_as): New prototype. * intrinsic.c (add_functions): Add SAME_TYPE_AS and EXTENDS_TYPE_OF. * primary.c (gfc_expr_attr): Handle CLASS-valued functions. * resolve.c (resolve_structure_cons): Handle BT_CLASS. (type_is_extensible): Make non-static and rename to 'gfc_type_is_extensible. (resolve_select_type): Renamed type_is_extensible. (resolve_class_assign): Handle NULL pointers. (resolve_fl_variable_derived): Renamed type_is_extensible. (resolve_fl_derived): Ditto. * trans-expr.c (gfc_trans_subcomponent_assign): Handle NULL initialization of class pointer components. (gfc_conv_structure): Handle BT_CLASS. * trans-intrinsic.c (gfc_conv_same_type_as,gfc_conv_extends_type_of): New functions. (gfc_conv_intrinsic_function): Handle SAME_TYPE_AS and EXTENDS_TYPE_OF. 2009-09-30 Janus Weil <janus@gcc.gnu.org> * gfortran.h (type_selector, select_type_tmp): New global variables. * match.c (type_selector, select_type_tmp): New global variables, used for SELECT TYPE statements. (gfc_match_select_type): Better error handling. Remember selector. (gfc_match_type_is): Create temporary variable. * module.c (ab_attribute): New value 'AB_IS_CLASS'. (attr_bits): New string. (mio_symbol_attribute): Handle 'is_class'. * resolve.c (resolve_select_type): Insert pointer assignment statement, to assign temporary to selector. * symbol.c (gfc_get_ha_sym_tree): Replace selector by a temporary in SELECT TYPE statements. 2009-09-30 Janus Weil <janus@gcc.gnu.org> * dump-parse-tree.c (show_code_node): Renamed 'alloc_list'. * gfortran.h (gfc_code): Rename 'alloc_list'. Add member 'ts'. (gfc_expr_to_initialize): New prototype. * match.c (alloc_opt_list): Correctly check type compatibility. Renamed 'alloc_list'. (dealloc_opt_list): Renamed 'alloc_list'. * resolve.c (expr_to_initialize): Rename to 'gfc_expr_to_initialize' and make it non-static. (resolve_allocate_expr): Set vindex for CLASS variables correctly. Move initialization code to gfc_trans_allocate. Renamed 'alloc_list'. (resolve_allocate_deallocate): Renamed 'alloc_list'. (check_class_pointer_assign): Rename to 'resolve_class_assign'. Change argument type. Adjust to work with ordinary assignments. (resolve_code): Call 'resolve_class_assign' for ordinary assignments. Renamed 'check_class_pointer_assign'. * st.c (gfc_free_statement): Renamed 'alloc_list'. * trans-stmt.c (gfc_trans_allocate): Renamed 'alloc_list'. Handle size determination and initialization of CLASS variables. Bugfix for ALLOCATE statements with default initialization and SOURCE block. (gfc_trans_deallocate): Renamed 'alloc_list'. 2009-09-30 Paul Thomas <pault@gcc.gnu.org> * trans-expr.c (gfc_conv_procedure_call): Convert a derived type actual to a class object if the formal argument is a class. 2009-09-30 Janus Weil <janus@gcc.gnu.org> PR fortran/40996 * decl.c (build_struct): Handle allocatable scalar components. * expr.c (gfc_add_component_ref): Correctly set typespec of expression, after inserting component reference. * match.c (gfc_match_type_is,gfc_match_class_is): Make sure that no variables are being used uninitialized. * primary.c (gfc_match_varspec): Handle CLASS array components. * resolve.c (resolve_select_type): Transform EXEC_SELECT_TYPE to EXEC_SELECT. * trans-array.c (structure_alloc_comps,gfc_trans_deferred_array): Handle allocatable scalar components. * trans-expr.c (gfc_conv_component_ref): Ditto. * trans-types.c (gfc_get_derived_type): Ditto. 2009-09-30 Janus Weil <janus@gcc.gnu.org> * decl.c (encapsulate_class_symbol): Modify names of class container components by prefixing with '$'. (gfc_match_end): Handle COMP_SELECT_TYPE. * expr.c (gfc_add_component_ref): Modify names of class container components by prefixing with '$'. * gfortran.h (gfc_statement): Add ST_SELECT_TYPE, ST_TYPE_IS and ST_CLASS_IS. (gfc_case): New field 'ts'. (gfc_exec_op): Add EXEC_SELECT_TYPE. (gfc_type_is_extension_of): New prototype. * match.h (gfc_match_select_type,gfc_match_type_is,gfc_match_class_is): New prototypes. * match.c (match_derived_type_spec): New function. (match_type_spec): Use 'match_derived_type_spec'. (match_case_eos): Modify error message. (gfc_match_select_type): New function. (gfc_match_case): Modify error message. (gfc_match_type_is): New function. (gfc_match_class_is): Ditto. * parse.h (gfc_compile_state): Add COMP_SELECT_TYPE. * parse.c (decode_statement): Handle SELECT TYPE, TYPE IS and CLASS IS statements. (next_statement): Handle ST_SELECT_TYPE. (gfc_ascii_statement): Handle ST_SELECT_TYPE, ST_TYPE_IS, ST_CLASS_IS. (parse_select_type_block): New function. (parse_executable): Handle ST_SELECT_TYPE. * resolve.c (resolve_deallocate_expr): Handle BT_CLASS. Modify names of class container components by prefixing with '$'. (resolve_allocate_expr): Ditto. (resolve_select_type): New function. (gfc_resolve_blocks): Handle EXEC_SELECT_TYPE. (check_class_pointer_assign): Modify names of class container components by prefixing with '$'. (resolve_code): Ditto. * st.c (gfc_free_statement): Ditto. * symbol.c (gfc_type_is_extension_of): New function. (gfc_type_compatible): Use 'gfc_type_is_extension_of', plus a bugfix. * trans.c (gfc_trans_code): Handel EXEC_SELECT_TYPE. 2009-09-30 Janus Weil <janus@gcc.gnu.org> Paul Thomas <pault@gcc.gnu.org> * check.c (gfc_check_move_alloc): Arguments don't have to be arrays. The second argument needs to be type-compatible with the first (not the other way around, which makes a difference for CLASS entities). * decl.c (encapsulate_class_symbol): New function. (build_sym,build_struct): Handle BT_CLASS, call 'encapsulate_class_symbol'. (gfc_match_decl_type_spec): Remove warning, use BT_CLASS. (gfc_match_derived_decl): Set vindex; * expr.c (gfc_add_component_ref): New function. (gfc_copy_expr,gfc_check_pointer_assign,gfc_check_assign_symbol): Handle BT_CLASS. * dump-parse-tree.c (show_symbol): Print vindex. * gfortran.h (bt): New basic type BT_CLASS. (symbol_attribute): New field 'is_class'. (gfc_typespec): Remove field 'is_class'. (gfc_symbol): New field 'vindex'. (gfc_get_ultimate_derived_super_type): New prototype. (gfc_add_component_ref): Ditto. * interface.c (gfc_compare_derived_types): Pointer equality check moved here from gfc_compare_types. (gfc_compare_types): Handle BT_CLASS and use gfc_type_compatible. * match.c (gfc_match_allocate,gfc_match_deallocate,gfc_match_call): Handle BT_CLASS. * misc.c (gfc_clear_ts): Removed is_class. (gfc_basic_typename,gfc_typename): Handle BT_CLASS. * module.c (bt_types,mio_typespec): Handle BT_CLASS. (mio_symbol): Handle vindex. * primary.c (gfc_match_varspec,gfc_variable_attr): Handle BT_CLASS. * resolve.c (find_array_spec,check_typebound_baseobject): Handle BT_CLASS. (resolve_ppc_call,resolve_expr_ppc): Don't call 'gfc_is_proc_ptr_comp' inside 'gcc_assert'. (resolve_deallocate_expr,resolve_allocate_expr): Handle BT_CLASS. (check_class_pointer_assign): New function. (resolve_code): Handle BT_CLASS, call check_class_pointer_assign. (resolve_fl_var_and_proc,type_is_extensible,resolve_fl_variable_derived, resolve_fl_variable): Handle BT_CLASS. (check_generic_tbp_ambiguity): Add special case. (resolve_typebound_procedure,resolve_fl_derived): Handle BT_CLASS. * symbol.c (gfc_get_ultimate_derived_super_type): New function. (gfc_type_compatible): Handle BT_CLASS. * trans-expr.c (conv_parent_component_references): Handle CLASS containers. (gfc_conv_initializer): Handle BT_CLASS. * trans-types.c (gfc_typenode_for_spec,gfc_get_derived_type): Handle BT_CLASS. testsuite/ 2009-09-30 Janus Weil <janus@gcc.gnu.org> * gfortran.dg/same_type_as_1.f03: New test. * gfortran.dg/same_type_as_2.f03: Ditto. 2009-09-30 Janus Weil <janus@gcc.gnu.org> * gfortran.dg/select_type_1.f03: Extended. * gfortran.dg/select_type_3.f03: New test. 2009-09-30 Janus Weil <janus@gcc.gnu.org> * gfortran.dg/class_allocate_1.f03: New test. 2009-09-30 Janus Weil <janus@gcc.gnu.org> PR fortran/40996 * gfortran.dg/allocatable_scalar_3.f90: New test. * gfortran.dg/select_type_2.f03: Ditto. * gfortran.dg/typebound_proc_5.f03: Changed error messages. 2009-09-30 Janus Weil <janus@gcc.gnu.org> * gfortran.dg/block_name_2.f90: Modified error message. * gfortran.dg/select_6.f90: Ditto. * gfortran.dg/select_type_1.f03: New test. 2009-09-30 Janus Weil <janus@gcc.gnu.org> * gfortran.dg/allocate_derived_1.f90: Remove -w option. * gfortran.dg/class_1.f03: Ditto. * gfortran.dg/class_2.f03: Ditto. * gfortran.dg/proc_ptr_comp_pass_1.f90: Ditto. * gfortran.dg/proc_ptr_comp_pass_2.f90: Ditto. * gfortran.dg/proc_ptr_comp_pass_3.f90: Ditto. * gfortran.dg/typebound_call_10.f03: Ditto. * gfortran.dg/typebound_call_2.f03: Ditto. * gfortran.dg/typebound_call_3.f03: Ditto. * gfortran.dg/typebound_call_4.f03: Ditto. * gfortran.dg/typebound_call_9.f03: Ditto. * gfortran.dg/typebound_generic_3.f03: Ditto. * gfortran.dg/typebound_generic_4.f03: Ditto. * gfortran.dg/typebound_operator_1.f03: Ditto. * gfortran.dg/typebound_operator_2.f03: Ditto. * gfortran.dg/typebound_operator_3.f03: Ditto. * gfortran.dg/typebound_operator_4.f03: Ditto. * gfortran.dg/typebound_proc_1.f08: Ditto. * gfortran.dg/typebound_proc_5.f03: Ditto. * gfortran.dg/typebound_proc_6.f03: Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@152345 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-09-29 Daniel Kraft <d@domob.eu>domob2009-09-291-8/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR fortran/39626 * gfortran.h (enum gfc_statement): Add ST_BLOCK and ST_END_BLOCK. (struct gfc_namespace): Convert flags to bit-fields and add flag `construct_entities' for use with BLOCK constructs. (enum gfc_exec_code): Add EXEC_BLOCK. (struct gfc_code): Add namespace field to union for EXEC_BLOCK. * match.h (gfc_match_block): New prototype. * parse.h (enum gfc_compile_state): Add COMP_BLOCK. * trans.h (gfc_process_block_locals): New prototype. (gfc_trans_deferred_vars): Made public, new prototype. * trans-stmt.h (gfc_trans_block_construct): New prototype. * decl.c (gfc_match_end): Handle END BLOCK correctly. (gfc_match_intent): Error if inside of BLOCK. (gfc_match_optional), (gfc_match_value): Ditto. * match.c (gfc_match_block): New routine. * parse.c (decode_statement): Handle BLOCK statement. (case_exec_markers): Add ST_BLOCK. (case_end): Add ST_END_BLOCK. (gfc_ascii_statement): Handle ST_BLOCK and ST_END_BLOCK. (parse_spec): Check for statements not allowed inside of BLOCK. (parse_block_construct): New routine. (parse_executable): Parse BLOCKs. (parse_progunit): Disallow CONTAINS in BLOCK constructs. * resolve.c (is_illegal_recursion): Find real container procedure and don't get confused by BLOCK constructs. (resolve_block_construct): New routine. (gfc_resolve_blocks), (resolve_code): Handle EXEC_BLOCK. * st.c (gfc_free_statement): Handle EXEC_BLOCK statements. * trans-decl.c (saved_local_decls): New static variable. (add_decl_as_local): New routine. (gfc_finish_var_decl): Add variable as local if inside BLOCK. (gfc_trans_deferred_vars): Make public. (gfc_process_block_locals): New routine. * trans-stmt.c (gfc_trans_block_construct): New routine. * trans.c (gfc_trans_code): Handle EXEC_BLOCK statements. 2009-09-29 Daniel Kraft <d@domob.eu> PR fortran/39626 * gfortran.dg/block_1.f08: New test. * gfortran.dg/block_2.f08: New test. * gfortran.dg/block_3.f90: New test. * gfortran.dg/block_4.f08: New test. * gfortran.dg/block_5.f08: New test. * gfortran.dg/block_6.f08: New test. * gfortran.dg/block_7.f08: New test. * gfortran.dg/block_8.f08: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@152266 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-09-11 Janus Weil <janus@gcc.gnu.org>janus2009-09-101-2/+7
| | | | | | | | | | | | | | | | | | PR fortran/41242 * resolve.c (resolve_ordinary_assign): Don't call resolve_code, to avoid that subsequent codes are resolved more than once. (resolve_code): Make sure that type-bound assignment operators are resolved correctly. 2009-09-11 Janus Weil <janus@gcc.gnu.org> PR fortran/41242 * gfortran.dg/proc_ptr_comp_21.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151620 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-09-07 Thomas Koenig <tkoenig@gcc.gnu.org>tkoenig2009-09-071-7/+9
| | | | | | | | | | | | | | | | | | PR fortran/41197 * resolve_c (resolve_allocate_deallocate): Complain if stat or errmsg varaible is an array. 2009-09-07 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/41197 * gfortran.dg/allocate_alloc_opt_1.f90: Use scalar variables for stat and errmsg. * gfortran.dg/deallocate_alloc_opt_1.f90: Likewise. * gfortran.dg/allocate_stat_2.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151480 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-08-31 Janus Weil <janus@gcc.gnu.org>janus2009-08-311-6/+9
| | | | | | | | | | | | | | | | | | | PR fortran/40996 * check.c (gfc_check_allocated): Implement allocatable scalars. * resolve.c (resolve_allocate_expr,resolve_fl_var_and_proc): Ditto. * trans-intrinsic.c (gfc_conv_allocated): Ditto. 2009-08-31 Janus Weil <janus@gcc.gnu.org> PR fortran/40996 * gfortran.dg/allocatable_scalar_1.f90: New. * gfortran.dg/allocatable_scalar_2.f90: Renamed from finalize_9.f03. * gfortran.dg/finalize_9.f03: Renamed to allocatable_scalar_2.f90. * gfortran.dg/proc_ptr_comp_pass_4.f90: Modified. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151240 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-08-27 Janus Weil <janus@gcc.gnu.org>janus2009-08-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | PR fortran/40869 * expr.c (gfc_check_pointer_assign): Enable interface check for pointer assignments involving procedure pointer components. * gfortran.h (gfc_compare_interfaces): Modified prototype. * interface.c (gfc_compare_interfaces): Add argument 'name2', to be used instead of s2->name. Don't rely on the proc_pointer attribute, but instead on the flags handed to this function. (check_interface1,compare_parameter): Add argument for gfc_compare_interfaces. * resolve.c (check_generic_tbp_ambiguity): Ditto. 2009-08-27 Janus Weil <janus@gcc.gnu.org> PR fortran/40869 * gfortran.dg/proc_ptr_comp_20.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151147 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-08-27 Daniel Kraft <d@domob.eu>domob2009-08-271-46/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR fortran/37425 * gfortran.h (gfc_expr): Optionally store base-object in compcall value and add a new flag to distinguish assign-calls generated. (gfc_find_typebound_proc): Add locus argument. (gfc_find_typebound_user_op), (gfc_find_typebound_intrinsic_op): Ditto. (gfc_extend_expr): Return if failure was by a real error. * interface.c (matching_typebound_op): New routine. (build_compcall_for_operator): New routine. (gfc_extend_expr): Handle type-bound operators, some clean-up and return if failure was by a real error or just by not finding an appropriate operator definition. (gfc_extend_assign): Handle type-bound assignments. * module.c (MOD_VERSION): Incremented. (mio_intrinsic_op): New routine. (mio_full_typebound_tree): New routine to make typebound-procedures IO code reusable for type-bound user operators. (mio_f2k_derived): IO of type-bound operators. * primary.c (gfc_match_varspec): Initialize new fields in gfc_expr and pass locus to gfc_find_typebound_proc. * resolve.c (resolve_operator): Only output error about no matching interface if gfc_extend_expr did not already fail with an error. (extract_compcall_passed_object): Use specified base-object if present. (update_compcall_arglist): Handle ignore_pass field. (resolve_ordinary_assign): Update to handle extended code for type-bound assignments, too. (resolve_code): Handle EXEC_ASSIGN_CALL statement code. (resolve_tb_generic_targets): Pass locus to gfc_find_typebound_proc. (resolve_typebound_generic), (resolve_typebound_procedure): Ditto. (resolve_typebound_intrinsic_op), (resolve_typebound_user_op): Ditto. (ensure_not_abstract_walker), (resolve_fl_derived): Ditto. (resolve_typebound_procedures): Remove not-implemented error. (resolve_typebound_call): Handle assign-call flag. * symbol.c (find_typebound_proc_uop): New argument to pass locus for error message about PRIVATE, verify that a found procedure is not marked as erraneous. (gfc_find_typebound_intrinsic_op): Ditto. (gfc_find_typebound_proc), (gfc_find_typebound_user_op): New locus arg. 2009-08-27 Daniel Kraft <d@domob.eu> PR fortran/37425 * gfortran.dg/impure_assignment_1.f90: Change expected error message. * gfortran.dg/typebound_operator_1.f03: Remove check for not-implemented error and fix problem with recursive assignment. * gfortran.dg/typebound_operator_2.f03: No not-implemented check. * gfortran.dg/typebound_operator_3.f03: New test. * gfortran.dg/typebound_operator_4.f03: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151140 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-08-25 Janus Weil <janus@gcc.gnu.org>janus2009-08-251-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR fortran/41139 * primary.c (gfc_match_varspec): Make sure EXPR_PPC is only used for calls to procedure pointer components, other references to procedure pointer components are EXPR_VARIABLE. * resolve.c (resolve_actual_arglist): Bugfix (there can be calls without actual arglist). * trans-expr.c (gfc_get_proc_ptr_comp): Renamed to 'get_proc_ptr_comp', removed argument 'se' and made static. Avoid inserting a temporary variable for calling the PPC. (conv_function_val): Renamed gfc_get_proc_ptr_comp. (gfc_conv_procedure_call): Distinguish functions returning a procedure pointer from calls to a procedure pointer. Distinguish calls to procedure pointer components from procedure pointer components as actual arguments. * trans-stmt.h (gfc_get_proc_ptr_comp): Make it static. 2009-08-25 Janus Weil <janus@gcc.gnu.org> PR fortran/41139 * gfortran.dg/proc_ptr_25.f90: New. * gfortran.dg/proc_ptr_comp_18.f90: New. * gfortran.dg/proc_ptr_comp_19.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151081 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-08-21 Janus Weil <janus@gcc.gnu.org>janus2009-08-211-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | PR fortran/41106 * primary.c (gfc_variable_attr): Make it work also on EXPR_FUNCTION. (gfc_expr_attr): Use gfc_variable_attr for procedure pointer components. * resolve.c (resolve_fl_derived): Handle CHARACTER-valued procedure pointer components. * trans-expr.c (gfc_conv_component_ref): Ditto. (gfc_conv_variable): Ditto. (gfc_conv_procedure_call): Ditto. (gfc_trans_pointer_assignment): Ditto. * trans-types.c (gfc_get_derived_type): Ditto. 2009-08-21 Janus Weil <janus@gcc.gnu.org> PR fortran/41106 * gfortran.dg/proc_ptr_23.f90: New. * gfortran.dg/proc_ptr_comp_15.f90: New. * gfortran.dg/proc_ptr_comp_16.f90: New. * gfortran.dg/proc_ptr_comp_17.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@150987 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-08-20 Janus Weil <janus@gcc.gnu.org>janus2009-08-201-1/+1
| | | | | | | | | | | | | | | PR fortran/41121 * resolve.c (resolve_symbol): Don't resolve formal_ns of intrinsic procedures. 2009-08-20 Janus Weil <janus@gcc.gnu.org> PR fortran/41121 * gfortran.dg/intrinsic_5.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@150957 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-08-17 Daniel Kraft <d@domob.eu>domob2009-08-171-6/+29
| | | | | | | | | | | | | | | | | PR fortran/37425 * resolve.c (get_checked_tb_operator_target): New routine to do checks on type-bound operators in common between intrinsic and user operators. (resolve_typebound_intrinsic_op): Call it. (resolve_typebound_user_op): Ditto. 2009-08-17 Daniel Kraft <d@domob.eu> PR fortran/37425 * gfortran.dg/typebound_operator_2.f03: Test for error with illegal NOPASS bindings as operators. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@150856 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-08-17 Janus Weil <janus@gcc.gnu.org>janus2009-08-171-9/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | PR fortran/40877 * array.c (gfc_resolve_character_array_constructor): Add NULL argument to gfc_new_charlen. * decl.c (add_init_expr_to_sym,variable_decl,match_char_spec, gfc_match_implicit): Ditto. * expr.c (simplify_const_ref): Fix memory leak. (gfc_simplify_expr): Add NULL argument to gfc_new_charlen. * gfortran.h (gfc_new_charlen): Modified prototype. * iresolve.c (check_charlen_present,gfc_resolve_char_achar): Add NULL argument to gfc_new_charlen. * module.c (mio_charlen): Ditto. * resolve.c (gfc_resolve_substring_charlen, gfc_resolve_character_operator,fixup_charlen): Ditto. (resolve_fl_derived,resolve_symbol): Add argument to gfc_charlen. * symbol.c (gfc_new_charlen): Add argument 'old_cl' (to make a copy of an existing charlen). (gfc_set_default_type,generate_isocbinding_symbol): Fix memory leak. (gfc_copy_formal_args_intr): Add NULL argument to gfc_new_charlen. * trans-decl.c (create_function_arglist): Fix memory leak. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@150823 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-08-14 Janus Weil <janus@gcc.gnu.org>janus2009-08-141-2/+2
| | | | | | | | | | | | | | | PR fortran/41070 * resolve.c (resolve_structure_cons): Make sure that ts.u.derived is only used if type is BT_DERIVED. 2009-08-14 Janus Weil <janus@gcc.gnu.org> PR fortran/41070 * gfortran.dg/structure_constructor_10.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@150781 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-08-13 Janus Weil <janus@gcc.gnu.org>janus2009-08-131-182/+179
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR fortran/40941 * gfortran.h (gfc_typespec): Put 'derived' and 'cl' into union. * decl.c (build_struct): Make sure 'cl' is only used if type is BT_CHARACTER. * symbol.c (gfc_set_default_type): Ditto. * resolve.c (resolve_symbol, resolve_fl_derived): Ditto. (resolve_equivalence,resolve_equivalence_derived): Make sure 'derived' is only used if type is BT_DERIVED. * trans-io.c (transfer_expr): Make sure 'derived' is only used if type is BT_DERIVED or BT_INTEGER (special case: C_PTR/C_FUNPTR). * array.c: Mechanical replacements to accomodate union in gfc_typespec. * check.c: Ditto. * data.c: Ditto. * decl.c: Ditto. * dump-parse-tree.c: Ditto. * expr.c: Ditto. * interface.c: Ditto. * iresolve.c: Ditto. * match.c: Ditto. * misc.c: Ditto. * module.c: Ditto. * openmp.c: Ditto. * parse.c: Ditto. * primary.c: Ditto. * resolve.c: Ditto. * simplify.c: Ditto. * symbol.c: Ditto. * target-memory.c: Ditto. * trans-array.c: Ditto. * trans-common.c: Ditto. * trans-const.c: Ditto. * trans-decl.c: Ditto. * trans-expr.c: Ditto. * trans-intrinsic.c: Ditto. * trans-io.c: Ditto. * trans-stmt.c: Ditto. * trans-types.c: Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@150725 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-08-13 Janus Weil <janus@gcc.gnu.org>janus2009-08-131-52/+50
| | | | | | | | | | | | | | | | | | | PR fortran/40995 * resolve.c (resolve_symbol): Move some checking code to resolve_intrinsic, and call this from here. (resolve_intrinsic): Some checking code moved here from resolve_symbol. Make sure each intrinsic is only resolved once. 2009-08-13 Janus Weil <janus@gcc.gnu.org> PR fortran/40995 * gfortran.dg/intrinsic_4.f90: New. * gfortran.dg/intrinsic_subroutine.f90: An error message moved to a different line. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@150716 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-08-10 Daniel Kraft <d@domob.eu>domob2009-08-101-81/+258
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR fortran/37425 * gfortran.dg/typebound_operator_1.f03: New test. * gfortran.dg/typebound_operator_2.f03: New test. 2009-08-10 Daniel Kraft <d@domob.eu> PR fortran/37425 * gfortran.h (struct gfc_namespace): New fields tb_uop_root and tb_op. (gfc_find_typebound_user_op): New routine. (gfc_find_typebound_intrinsic_op): Ditto. (gfc_check_operator_interface): Now public routine. * decl.c (gfc_match_generic): Match OPERATOR(X) or ASSIGNMENT(=). * interface.c (check_operator_interface): Made public, renamed to `gfc_check_operator_interface' accordingly and hand in the interface as gfc_symbol rather than gfc_interface so it is useful for type-bound operators, too. Return boolean result. (gfc_check_interfaces): Adapt call to `check_operator_interface'. * symbol.c (gfc_get_namespace): Initialize new field `tb_op'. (gfc_free_namespace): Free `tb_uop_root'-based tree. (find_typebound_proc_uop): New helper function. (gfc_find_typebound_proc): Use it. (gfc_find_typebound_user_op): New method. (gfc_find_typebound_intrinsic_op): Ditto. * resolve.c (resolve_tb_generic_targets): New helper function. (resolve_typebound_generic): Use it. (resolve_typebound_intrinsic_op), (resolve_typebound_user_op): New. (resolve_typebound_procedures): Resolve operators, too. (check_uop_procedure): New, code from gfc_resolve_uops. (gfc_resolve_uops): Moved main code to new `check_uop_procedure'. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@150622 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-08-10 Janus Weil <janus@gcc.gnu.org>janus2009-08-101-9/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR fortran/40940 * decl.c (gfc_match_type_spec): Match CLASS statement and warn about missing polymorphism. * gfortran.h (gfc_typespec): Add field 'is_class'. * misc.c (gfc_clear_ts): Initialize 'is_class' to zero. * resolve.c (type_is_extensible): New function to check if a derived type is extensible. (resolve_fl_variable_derived): Add error checks for CLASS variables. (resolve_typebound_procedure): Disallow non-polymorphic passed-object dummy arguments, turning warning into error. (resolve_fl_derived): Use 'type_is_extensible'. Disallow non-polymorphic passed-object dummy arguments for procedure pointer components, turning warning into error. Add error check for CLASS components. 2009-08-10 Janus Weil <janus@gcc.gnu.org> PR fortran/40940 * gfortran.dg/class_1.f03: New. * gfortran.dg/class_2.f03: New. * gfortran.dg/proc_ptr_comp_pass_1.f90: Use CLASS instead of TYPE. * gfortran.dg/proc_ptr_comp_pass_2.f90: Ditto. * gfortran.dg/proc_ptr_comp_pass_3.f90: Ditto. * gfortran.dg/typebound_call_10.f03: Ditto. * gfortran.dg/typebound_call_2.f03: Ditto. * gfortran.dg/typebound_call_3.f03: Ditto. * gfortran.dg/typebound_call_4.f03: Ditto. * gfortran.dg/typebound_generic_3.f03: Ditto. * gfortran.dg/typebound_generic_4.f03: Ditto. * gfortran.dg/typebound_proc_1.f08: Ditto. * gfortran.dg/typebound_proc_5.f03: Ditto. * gfortran.dg/typebound_proc_6.f03: Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@150620 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-08-05 Tobias Burnus <burnus@net-b.de>burnus2009-08-091-0/+2
| | | | | | | | | | | | | | | | | | | | | | PR fortran/40955 * gfortran.h (ext_attr_id_t): Add typedef for this enum. (gfc_add_ext_attribute): Use it. * decl.c (gfc_match_gcc_attributes): Ditto. * expr.c (gfc_check_pointer_assign): Ditto. * symbol.c (gfc_add_ext_attribute): Ditto. (gfc_copy_attr): Copy also ext_attr. * resolve.c (resolve_fl_derived,resolve_symbol): Ditto. * module.c (mio_symbol_attribute): Save ext_attr in the mod * file. 2009-08-05 Tobias Burnus <burnus@net-b.de> PR fortran/40955 * gfortran.dg/module_md5_1.f90: Update MD5 check sum. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@150589 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-08-02 Janus Weil <janus@gcc.gnu.org>janus2009-08-021-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR fortran/40881 * decl.c (match_char_length): Warn about old-style character length declarations. * match.c (match_arithmetic_if,gfc_match_if): Modify warning message for arithmetic if. (gfc_match_goto): Warn about computed gotos. (gfc_match_return): Warn about alternate return. (gfc_match_st_function): Warn about statement functions. * resolve.c (resolve_fl_procedure): Modify warning message for assumed-length character functions. 2009-08-02 Janus Weil <janus@gcc.gnu.org> PR fortran/40881 * gfortran.dg/aliasing_dummy_1.f90: Add -std=legacy. * gfortran.dg/altreturn_3.f90: Ditto. * gfortran.dg/altreturn_5.f90: Ditto. * gfortran.dg/altreturn_6.f90: Ditto. * gfortran.dg/altreturn_7.f90: Ditto. * gfortran.dg/array_constructor_13.f90: Ditto. * gfortran.dg/arrayio_7.f90: Ditto. * gfortran.dg/arrayio_8.f90: Ditto. * gfortran.dg/assumed_charlen_function_3.f90: Modified warning message. * gfortran.dg/assumed_charlen_function_4.f90: Add -std=legacy. * gfortran.dg/assumed_charlen_function_5.f90: Modified warning message. * gfortran.dg/backspace_8.f: Add -std=legacy. * gfortran.dg/backspace_9.f: Ditto. * gfortran.dg/char_comparison_1.f: Ditto. * gfortran.dg/char_decl_1.f90: Ditto. * gfortran.dg/char_initialiser_actual.f90: Ditto. * gfortran.dg/char_pointer_assign.f90: Ditto. * gfortran.dg/char_pointer_dependency.f90: Ditto. * gfortran.dg/char_pointer_dummy.f90: Ditto. * gfortran.dg/char_pointer_func.f90: Ditto. * gfortran.dg/common_8.f90: Ditto. * gfortran.dg/constant_substring.f: Ditto. * gfortran.dg/data_char_2.f90: Ditto. * gfortran.dg/der_array_io_1.f90: Ditto. * gfortran.dg/der_array_io_2.f90: Ditto. * gfortran.dg/der_array_io_3.f90: Ditto. * gfortran.dg/der_io_3.f90: Ditto. * gfortran.dg/dev_null.F90: Ditto. * gfortran.dg/direct_io_2.f90: Ditto. * gfortran.dg/do_iterator_2.f90: Ditto. * gfortran.dg/e_d_fmt.f90: Ditto. * gfortran.dg/empty_format_1.f90: Ditto. * gfortran.dg/entry_17.f90: Modified warning message. * gfortran.dg/entry_7.f90: Add -std=legacy. * gfortran.dg/eor_1.f90: Ditto. * gfortran.dg/equiv_2.f90: Ditto. * gfortran.dg/equiv_constraint_2.f90: Use new-style character length. * gfortran.dg/equiv_substr.f90: Add -std=legacy. * gfortran.dg/extended_char_comparison_1.f: Ditto. * gfortran.dg/fmt_bz_bn_err.f: Ditto. * gfortran.dg/fmt_error_2.f90: Ditto. * gfortran.dg/fmt_read_bz_bn.f90: Ditto. * gfortran.dg/fmt_tl.f: Ditto. * gfortran.dg/fmt_white.f: Ditto. * gfortran.dg/func_derived_1.f90: Ditto. * gfortran.dg/g77_intrinsics_funcs.f: Ditto. * gfortran.dg/g77_intrinsics_sub.f: Ditto. * gfortran.dg/global_references_2.f90: Ditto. * gfortran.dg/hollerith_1.f90: Ditto. * gfortran.dg/hollerith.f90: Use new-style character length. * gfortran.dg/hollerith_f95.f90: Ditto. * gfortran.dg/ichar_1.f90: Add -std=legacy. * gfortran.dg/implicit_6.f90: Ditto. * gfortran.dg/implicit_9.f90: Ditto. * gfortran.dg/inquire_13.f90: Ditto. * gfortran.dg/inquire_5.f90: Ditto. * gfortran.dg/inquire_6.f90: Ditto. * gfortran.dg/inquire.f90: Ditto. * gfortran.dg/io_constraints_1.f90: Use new-style character length. * gfortran.dg/io_constraints_2.f90: Ditto. * gfortran.dg/list_read_2.f90: Add -std=legacy. * gfortran.dg/loc_2.f90: Ditto. * gfortran.dg/logical_1.f90: Ditto. * gfortran.dg/longline.f: Ditto. * gfortran.dg/merge_char_1.f90: Ditto. * gfortran.dg/namelist_12.f: Ditto. * gfortran.dg/namelist_14.f90: Ditto. * gfortran.dg/namelist_18.f90: Ditto. * gfortran.dg/namelist_19.f90: Ditto. * gfortran.dg/namelist_21.f90: Ditto. * gfortran.dg/namelist_22.f90: Ditto. * gfortran.dg/namelist_37.f90: Ditto. * gfortran.dg/namelist_54.f90: Ditto. * gfortran.dg/namelist_55.f90: Ditto. * gfortran.dg/namelist_empty.f90: Ditto. * gfortran.dg/namelist_use.f90: Use new-style character length. * gfortran.dg/namelist_use_only.f90: Add -std=legacy. * gfortran.dg/nested_modules_4.f90: Ditto. * gfortran.dg/nested_modules_5.f90: Ditto. * gfortran.dg/open-options-blanks.f: Ditto. * gfortran.dg/output_exponents_1.f90: Ditto. * gfortran.dg/parens_5.f90: Ditto. * gfortran.dg/parens_6.f90: Ditto. * gfortran.dg/parent_result_ref_2.f90: Modified warning message. * gfortran.dg/pointer_function_actual_1.f90: Add -std=legacy. * gfortran.dg/pr15129.f90: Ditto. * gfortran.dg/pr15332.f: Ditto. * gfortran.dg/pr16597.f90: Ditto. * gfortran.dg/pr17143.f90: Ditto. * gfortran.dg/pr17164.f90: Ditto. * gfortran.dg/pr17229.f: Modified warning message. * gfortran.dg/pr18210.f90: Add -std=legacy. * gfortran.dg/pr19155.f: Ditto. * gfortran.dg/pr20086.f90: Ditto. * gfortran.dg/pr20124.f90: Ditto. * gfortran.dg/pr20755.f: Ditto. * gfortran.dg/pr20865.f90: Ditto. * gfortran.dg/pr20950.f: Ditto. * gfortran.dg/pr21730.f: Ditto. * gfortran.dg/pr22491.f: Ditto. * gfortran.dg/pr29713.f90: Ditto. * gfortran.dg/print_parentheses_1.f: Ditto. * gfortran.dg/print_parentheses_2.f90: Ditto. * gfortran.dg/proc_assign_1.f90: Ditto. * gfortran.dg/proc_decl_1.f90: Ditto. * gfortran.dg/proc_ptr_17.f90: Add dg-warning. * gfortran.dg/read_eor.f90: : Add -std=legacy. * gfortran.dg/read_float_1.f90: Ditto. * gfortran.dg/read_logical.f90: Ditto. * gfortran.dg/recursive_statement_functions.f90: Ditto. * gfortran.dg/return_1.f90: Ditto. * gfortran.dg/rewind_1.f90: Ditto. * gfortran.dg/runtime_warning_1.f90: Use new-style character length. * gfortran.dg/scalar_return_1.f90: Add -std=legacy. * gfortran.dg/stfunc_1.f90: Ditto. * gfortran.dg/stfunc_3.f90: Ditto. * gfortran.dg/stfunc_4.f90: Ditto. * gfortran.dg/stfunc_6.f90: Ditto. * gfortran.dg/streamio_2.f90: Ditto. * gfortran.dg/string_ctor_1.f90: Ditto. * gfortran.dg/string_null_compare_1.f: Ditto. * gfortran.dg/substr_6.f90: Ditto. * gfortran.dg/tl_editing.f90: Ditto. * gfortran.dg/unf_io_convert_1.f90: Use new-style character length. * gfortran.dg/warnings_are_errors_1.f90: Modified warning message. * gfortran.dg/x_slash_1.f: Add -std=legacy. * gfortran.dg/g77/1832.f: Ditto. * gfortran.dg/g77/19981216-0.f Ditto. * gfortran.dg/g77/19990525-0.f: Ditto. * gfortran.dg/g77/19990826-2.f: Ditto. * gfortran.dg/g77/20000630-2.f: Ditto. * gfortran.dg/g77/20010116.f: Ditto. * gfortran.dg/g77/20010519-1.f: Use new-style character length. * gfortran.dg/g77/980419-2.f: Add -std=legacy. * gfortran.dg/g77/980520-1.f: Ditto. * gfortran.dg/g77/check0.f: Ditto. * gfortran.dg/g77/cpp3.F: Ditto. * gfortran.dg/g77/cpp4.F: Use new-style character length. * gfortran.dg/g77/f77-edit-i-in.f: Add -std=legacy. * gfortran.dg/g77/f77-edit-t-in.f: Ditto. * gfortran.dg/g77/short.f: Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@150349 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-08-01 Paul Thomas <pault@gcc.gnu.org>pault2009-08-011-2/+83
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR fortran/40011 * error.c : Add static flag 'warnings_not_errors'. (gfc_error): If 'warnings_not_errors' is set, branch to code from gfc_warning. (gfc_clear_error): Reset 'warnings_not_errors'. (gfc_errors_to_warnings): New function. * options.c (gfc_post_options): If pedantic and flag_whole_file change the latter to a value of 2. * parse.c (parse_module): Add module namespace to gsymbol. (resolve_all_program_units): New function. (clean_up_modules): New function. (translate_all_program_units): New function. (gfc_parse_file): If whole_file, do not clean up module right away and add derived types to namespace derived types. In addition, call the three new functions above. * resolve.c (not_in_recursive): New function. (not_entry_self_reference): New function. (resolve_global_procedure): Symbol must not be IFSRC_UNKNOWN, procedure must not be in the course of being resolved and must return false for the two new functions. Pack away the current derived type list before calling gfc_resolve for the gsymbol namespace. It is unconditionally an error if the ranks of the reference and ther procedure do not match. Convert errors to warnings during call to gfc_procedure_use if not pedantic or legacy. (gfc_resolve): Set namespace resolved flag to -1 during resolution and store current cs_base. * trans-decl.c (gfc_get_symbol_decl): If whole_file compilation substitute a use associated variable, if it is available in a gsymbolnamespace. (gfc_get_extern_function_decl): If the procedure is use assoc, do not attempt to find it in a gsymbol because it could be an interface. If the symbol exists in a module namespace, return its backend_decl. * trans-expr.c (gfc_trans_scalar_assign): If a derived type assignment, set the rhs TYPE_MAIN_VARIANT to that of the rhs. * trans-types.c (copy_dt_decls_ifequal): Add 'from_gsym' as a boolean argument. Copy component backend_decls directly if the components are derived types and from_gsym is true. (gfc_get_derived_type): If whole_file copy the derived type from the module if it is use associated, otherwise, if can be found in another gsymbol namespace, use the existing derived type as the TYPE_CANONICAL and build normally. * gfortran.h : Add derived_types and resolved fields to gfc_namespace. Include prototype for gfc_errors_to_warnings. 2009-08-01 Paul Thomas <pault@gcc.gnu.org> PR fortran/40011 * gfortran.dg/whole_file_7.f90: New test. * gfortran.dg/whole_file_8.f90: New test. * gfortran.dg/whole_file_9.f90: New test. * gfortran.dg/whole_file_10.f90: New test. * gfortran.dg/whole_file_11.f90: New test. * gfortran.dg/whole_file_12.f90: New test. * gfortran.dg/whole_file_13.f90: New test. * gfortran.dg/whole_file_14.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@150333 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-07-26 Tobias Burnus <burnus@net-b.de>burnus2009-07-271-1/+1
| | | | | | | | | | | | | | | | | PR fortran/40851 * resolve.c (resolve_symbol): Do not initialize pointer * derived-types. * trans-decl.c (init_intent_out_dt): Ditto. (generate_local_decl): No need to set attr.referenced for DT pointers. 2009-07-26 Tobias Burnus <burnus@net-b.de> PR fortran/40851 * gfortran.dg/derived_init_3.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@150108 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-07-25 Janus Weil <janus@gcc.gnu.org>janus2009-07-251-8/+183
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR fortran/39630 * decl.c (match_ppc_decl): Implement the PASS attribute for procedure pointer components. (match_binding_attributes): Ditto. * gfortran.h (gfc_component): Add member 'tb'. (gfc_typebound_proc): Add member 'ppc' and make 'pass_arg' const. * module.c (MOD_VERSION): Bump module version. (binding_ppc): New string constants. (mio_component): Only use formal args if component is a procedure pointer and add 'tb' member. (mio_typebound_proc): Include pass_arg and take care of procedure pointer components. * resolve.c (update_arglist_pass): Add argument 'name' and take care of optional arguments. (extract_ppc_passed_object): New function, analogous to extract_compcall_passed_object, but for procedure pointer components. (update_ppc_arglist): New function, analogous to update_compcall_arglist, but for procedure pointer components. (resolve_typebound_generic_call): Added argument to update_arglist_pass. (resolve_ppc_call, resolve_expr_ppc): Take care of PASS attribute. (resolve_fl_derived): Check the PASS argument for procedure pointer components. * symbol.c (verify_bind_c_derived_type): Reject procedure pointer components in BIND(C) types. 2009-07-25 Janus Weil <janus@gcc.gnu.org> PR fortran/39630 * gfortran.dg/proc_ptr_comp_3.f90: Modified. * gfortran.dg/proc_ptr_comp_pass_1.f90: New. * gfortran.dg/proc_ptr_comp_pass_2.f90: New. * gfortran.dg/proc_ptr_comp_pass_3.f90: New. * gfortran.dg/proc_ptr_comp_pass_4.f90: New. * gfortran.dg/proc_ptr_comp_pass_5.f90: New. * gfortran.dg/typebound_call_10.f03: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@150078 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-07-24 Janus Weil <janus@gcc.gnu.org>janus2009-07-241-27/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR fortran/40822 * array.c (gfc_resolve_character_array_constructor): Use new function gfc_new_charlen. * decl.c (add_init_expr_to_sym,variable_decl,match_char_spec, gfc_match_implicit): Ditto. * expr.c (gfc_simplify_expr): Ditto. * gfortran.h (gfc_new_charlen): New prototype. * iresolve.c (check_charlen_present,gfc_resolve_char_achar): Use new function gfc_new_charlen. * module.c (mio_charlen): Ditto. * resolve.c (gfc_resolve_substring_charlen, gfc_resolve_character_operator,fixup_charlen,resolve_fl_derived, resolve_symbol): Ditto. * symbol.c (gfc_new_charlen): New function to create a new gfc_charlen structure and add it to a namespace. (gfc_copy_formal_args_intr): Make sure ts.cl is present for CHARACTER variables. 2009-07-24 Janus Weil <janus@gcc.gnu.org> PR fortran/40822 * gfortran.dg/char_length_16.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@150047 138bc75d-0d04-0410-961f-82ee72b054a4
* PR fortran/40839jakub2009-07-231-1/+1
| | | | | | | | | | | | | | * io.c (gfc_resolve_dt): Add LOC argument. Fail if dt->io_unit is NULL. Return FAILURE after issuing error about negative UNIT number. (match_io_element): Don't segfault if current_dt->io_unit is NULL. * gfortran.h (gfc_resolve_dt): Adjust prototype. * resolve.c (resolve_code): Adjust caller. * gfortran.dg/pr40839.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@150021 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-07-15 Janus Weil <janus@gcc.gnu.org>janus2009-07-151-1/+2
| | | | | | | | | | | | | | | | PR fortran/40743 * resolve.c (resolve_symbol): Don't resolve the formal namespace of a contained procedure. 2009-07-15 Janus Weil <janus@gcc.gnu.org> PR fortran/40743 * gfortran.dg/interface_assignment_4.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@149662 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-07-13 Janus Weil <janus@gcc.gnu.org>janus2009-07-131-1/+28
| | | | | | | | | | | | | | | | | | | | | | | PR fortran/40646 * module.c (mio_symbol): If the symbol has formal arguments, the formal namespace will be present. * resolve.c (resolve_actual_arglist): Correctly handle 'called' procedure pointer components as actual arguments. (resolve_fl_derived,resolve_symbol): Make sure the formal namespace is present. * trans-expr.c (gfc_conv_procedure_call): Correctly handle the formal arguments of procedure pointer components. 2009-07-13 Janus Weil <janus@gcc.gnu.org> PR fortran/40646 * gfortran.dg/proc_ptr_22.f90: Extended. * gfortran.dg/proc_ptr_comp_12.f90: Extended. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@149586 138bc75d-0d04-0410-961f-82ee72b054a4
* 2008-07-09 Paul Thomas <pault@gcc.gnu.org>pault2009-07-091-5/+6
| | | | | | | | | | | | | | | | | PR fortran/40629 * resolve.c (check_host_association): Use the existing accessible symtree and treat function expressions with symbols that have procedure flavor. 2008-07-09 Paul Thomas <pault@gcc.gnu.org> PR fortran/40629 * gfortran.dg/host_assoc_function_9.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@149422 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-07-09 Janus Weil <janus@gcc.gnu.org>janus2009-07-091-15/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR fortran/40646 * dump-parse-tree.c (show_expr): Renamed 'is_proc_ptr_comp'. * expr.c (is_proc_ptr_comp): Renamed to 'gfc_is_proc_ptr_comp'. (gfc_check_pointer_assign): Renamed 'is_proc_ptr_comp'. (replace_comp,gfc_expr_replace_comp): New functions, analogous to 'replace_symbol' and 'gfc_expr_replace_symbol', just with components instead of symbols. * gfortran.h (gfc_expr_replace_comp): New prototype. (is_proc_ptr_comp): Renamed to 'gfc_is_proc_ptr_comp'. * interface.c (compare_actual_formal): Renamed 'is_proc_ptr_comp'. * match.c (gfc_match_pointer_assignment): Ditto. * primary.c (gfc_match_varspec): Handle array-valued procedure pointers and procedure pointer components. Renamed 'is_proc_ptr_comp'. * resolve.c (resolve_fl_derived): Correctly handle interfaces with RESULT statement, and handle array-valued procedure pointer components. (resolve_actual_arglist,resolve_ppc_call,resolve_expr_ppc): Renamed 'is_proc_ptr_comp'. * trans-array.c (gfc_walk_function_expr): Ditto. * trans-decl.c (gfc_get_symbol_decl): Security check for presence of ns->proc_name. * trans-expr.c (gfc_conv_procedure_call): Handle array-valued procedure pointer components. Renamed 'is_proc_ptr_comp'. (conv_function_val,gfc_trans_arrayfunc_assign): Renamed 'is_proc_ptr_comp'. (gfc_get_proc_ptr_comp): Do not modify the argument 'e', but instead make a copy of it. * trans-io.c (gfc_trans_transfer): Handle array-valued procedure pointer components. 2009-07-09 Janus Weil <janus@gcc.gnu.org> PR fortran/40646 * gfortran.dg/proc_ptr_22.f90: New. * gfortran.dg/proc_ptr_comp_12.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@149419 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-07-05 Paul Thomas <pault@gcc.gnu.org>pault2009-07-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | and Tobias Burnus <burnus@gcc.gnu.org> PR fortran/40646 * gfortran.h : Change the compcall member of the 'value' union in the gfc_expr structure so that its fields overlap with the 'function' member. * resolve.c (resolve_compcall): Set the function.esym. * trans-expr.c (gfc_trans_arrayfunc_assign): Use is_proc_ptr_comp in the condition. * dependency.c (gfc_full_array_ref_p): Ensure that 'contiguous' retunrs a value if non-NULL. 2009-07-05 Paul Thomas <pault@gcc.gnu.org> and Tobias Burnus <burnus@gcc.gnu.org> PR fortran/40646 * gfortran.dg/func_assign_3.f90 : New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@149262 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-07-04 Janus Weil <janus@gcc.gnu.org>janus2009-07-041-1/+4
| | | | | | | | | | | | | | | | | | PR fortran/40593 * interface.c (compare_actual_formal): Take care of proc-pointer-valued functions as actual arguments. * trans-expr.c (gfc_conv_procedure_call): Ditto. * resolve.c (resolve_specific_f0): Use the correct ts. 2009-07-04 Janus Weil <janus@gcc.gnu.org> PR fortran/40593 * gfortran.dg/proc_ptr_result_6.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@149227 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-06-28 Tobias Burnus <burnus@net-b.de>burnus2009-06-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> PR fortran/34112 * symbol.c (gfc_add_ext_attribute): New function. (gfc_get_sym_tree): New argument allow_subroutine. (gfc_get_symbol,gfc_get_ha_sym_tree,gen_cptr_param,gen_fptr_param gen_shape_param,generate_isocbinding_symbol): Use it. * decl.c (find_special): New argument allow_subroutine. (add_init_expr_to_sym,add_hidden_procptr_result,attr_decl1, match_procedure_in_type,gfc_match_final_decl): Use it. (gfc_match_gcc_attributes): New function. * gfortran.texi (Mixed-Language Programming): New section "GNU Fortran Compiler Directives". * gfortran.h (ext_attr_t): New struct. (symbol_attributes): Use it. (gfc_add_ext_attribute): New prototype. (gfc_get_sym_tree): Update pototype. * expr.c (gfc_check_pointer_assign): Check whether call convention is the same. * module.c (import_iso_c_binding_module, create_int_parameter, use_iso_fortran_env_module): Update gfc_get_sym_tree call. * scanner.c (skip_gcc_attribute): New function. (skip_free_comments,skip_fixed_comments): Use it. (gfc_next_char_literal): Support !GCC$ lines. * resolve.c (check_host_association): Update gfc_get_sym_tree call. * match.c (gfc_match_sym_tree,gfc_match_call): Update gfc_get_sym_tree call. * trans-decl.c (add_attributes_to_decl): New function. (gfc_get_symbol_decl,get_proc_pointer_decl, gfc_get_extern_function_decl,build_function_decl: Use it. * match.h (gfc_match_gcc_attributes): Add prototype. * parse.c (decode_gcc_attribute): New function. (next_free,next_fixed): Support !GCC$ lines. * primary.c (match_actual_arg,check_for_implicit_index, gfc_match_rvalue,gfc_match_rvalue): Update gfc_get_sym_tree call. 2009-06-28 Tobias Burnus <burnus@net-b.de> PR fortran/34112 * gfortran.dg/compiler-directive_1.f90: New test. * gfortran.dg/compiler-directive_2.f: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@149036 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-06-26 Janus Weil <janus@gcc.gnu.org>janus2009-06-261-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | PR fortran/39997 PR fortran/40541 * decl.c (add_hidden_procptr_result): Copy the typespec to the hidden result. * expr.c (gfc_check_pointer_assign): Enable interface check for procedure pointer assignments where the rhs is a function returning a procedure pointer. * resolve.c (resolve_symbol): If an external procedure with unspecified return type can not be implicitly typed, it must be a subroutine. 2009-06-26 Janus Weil <janus@gcc.gnu.org> PR fortran/39997 PR fortran/40541 * gfortran.dg/proc_ptr_15.f90: Fixed and extended. * gfortran.dg/proc_ptr_common_1.f90: Fixed invalid test case. * gfortran.dg/proc_ptr_result_1.f90: Ditto. * gfortran.dg/proc_ptr_result_5.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@148996 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-06-24 Janus Weil <janus@gcc.gnu.org>janus2009-06-241-8/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR fortran/40427 * gfortran.h (gfc_component): New member 'formal_ns'. (gfc_copy_formal_args_ppc,void gfc_ppc_use): New. * interface.c (gfc_ppc_use): New function, analogous to gfc_procedure_use, but for procedure pointer components. * module.c (MOD_VERSION): Bump module version. (mio_component): Treat formal arguments. (mio_formal_arglist): Changed argument from gfc_symbol to gfc_formal_arglist. (mio_symbol): Changed argument of mio_formal_arglist. * resolve.c (resolve_ppc_call,resolve_expr_ppc): Call gfc_ppc_use, to check actual arguments and treat formal args correctly. (resolve_fl_derived): Copy formal args of procedure pointer components from their interface. * symbol.c (gfc_copy_formal_args_ppc): New function, analogous to gfc_copy_formal_args, but for procedure pointer components. 2009-06-24 Janus Weil <janus@gcc.gnu.org> PR fortran/40427 * gfortran.dg/proc_ptr_comp_11.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@148906 138bc75d-0d04-0410-961f-82ee72b054a4
* * gfortran.h (gfc_expr): Use mpc_t to represent complex numbers.ghazi2009-06-191-6/+14
| | | | | | | | | | * arith.c, dump-parse-tree.c, expr.c, module.c, resolve.c, simplify.c, target-memory.c, target-memory.h, trans-const.c, trans-expr.c: Convert to mpc_t throughout. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@148711 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-06-18 Janus Weil <janus@gcc.gnu.org>janus2009-06-181-1/+1
| | | | | | | | | | | | | | | | PR fortran/40451 * resolve.c (resolve_contained_fntype): Prevent implicit typing for procedures with explicit interface. * symbol.c (gfc_check_function_type): Ditto. 2009-06-18 Janus Weil <janus@gcc.gnu.org> PR fortran/40451 * gfortran.dg/proc_ptr_result_4.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@148652 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-06-16 Janus Weil <janus@gcc.gnu.org>janus2009-06-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR fortran/36947 PR fortran/40039 * expr.c (gfc_check_pointer_assign): Call 'gfc_compare_interfaces' with error message. * gfortran.h (gfc_compare_interfaces): Additional argument. * interface.c (operator_correspondence): Removed. (gfc_compare_interfaces): Additional argument to return error message. Directly use the code from 'operator_correspondence' instead of calling the function. Check for OPTIONAL. Some rearrangements. (check_interface1): Call 'gfc_compare_interfaces' without error message. (compare_parameter): Call 'gfc_compare_interfaces' with error message. * resolve.c (check_generic_tbp_ambiguity): Call 'gfc_compare_interfaces' without error message. 2009-06-16 Janus Weil <janus@gcc.gnu.org> PR fortran/36947 PR fortran/40039 * gfortran.dg/dummy_procedure_1.f90: Extended test case. * gfortran.dg/interface_20.f90: Modified error messages. * gfortran.dg/interface_21.f90: Ditto. * gfortran.dg/interface_26.f90: Ditto. * gfortran.dg/interface_27.f90: Ditto. * gfortran.dg/interface_28.f90: Extended test case. * gfortran.dg/interface_29.f90: New. * gfortran.dg/proc_decl_7.f90: Modified error messages. * gfortran.dg/proc_decl_8.f90: Ditto. * gfortran.dg/proc_ptr_11.f90: Ditto. * gfortran.dg/proc_ptr_15.f90: Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@148519 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-06-12 Janus Weil <janus@gcc.gnu.org>janus2009-06-121-3/+12
| | | | | | | | | | | | | | | | PR fortran/40176 * resolve.c (resolve_symbol): Additional error check, preventing an infinite loop. 2009-06-12 Janus Weil <janus@gcc.gnu.org> PR fortran/40176 * gfortran.dg/proc_decl_1.f90: Extended. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@148440 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-06-11 Paul Thomas <pault@gcc.gnu.org>pault2009-06-111-1/+4
| | | | | | | | | | | | | | PR fortran/40402 * resolve.c (next_data_value): It is an error if the value is not constant. 2009-06-11 Paul Thomas <pault@gcc.gnu.org> PR fortran/40402 * gfortran.dg/data_value_1.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@148396 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-06-07 Daniel Franke <franke.daniel@gmail.com>burnus2009-06-071-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | * check.c (dim_rank_check): Return SUCCESS if DIM=NULL. (gfc_check_lbound): Removed (now) redundant check for DIM=NULL. (gfc_check_minloc_maxloc): Likewise. (check_reduction): Likewise. (gfc_check_size): Likewise. (gfc_check_ubound): Likewise. (gfc_check_cshift): Added missing shape-conformance checks. (gfc_check_eoshift): Likewise. * gfortran.h (gfc_check_conformance): Modified prototype to printf-style. * expr.c (gfc_check_conformance): Accept error-message chunks in printf-style. Changed all callers. 2009-06-07 Daniel Franke <franke.daniel@gmail.com> PR fortran/36874 * gfortran.dg/intrinsic_argument_conformance_2.f90: Adjusted error message. * gfortran.dg/zero_sized_1.f90: Removed checks with incompatible shapes. * gfortran.dg/zero_sized_5.f90: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@148247 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-05-25 Janus Weil <janus@gcc.gnu.org>janus2009-05-251-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR fortran/40176 * primary.c (gfc_match_varspec): Handle procedure pointer components with array return value. * resolve.c (resolve_expr_ppc): Ditto. (resolve_symbol): Make sure the interface of a procedure pointer has been resolved. * trans-array.c (gfc_walk_function_expr): Handle procedure pointer components with array return value. * trans-expr.c (gfc_conv_component_ref,gfc_conv_procedure_call, gfc_trans_arrayfunc_assign): Ditto. (gfc_trans_pointer_assignment): Handle procedure pointer assignments, where the rhs is a dummy argument. * trans-types.c (gfc_get_ppc_type,gfc_get_derived_type): Handle procedure pointer components with array return value. 2009-05-25 Janus Weil <janus@gcc.gnu.org> PR fortran/40176 * gfortran.dg/proc_ptr_18.f90: New. * gfortran.dg/proc_ptr_19.f90: New. * gfortran.dg/proc_ptr_comp_9.f90: New. * gfortran.dg/proc_ptr_comp_10.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147850 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-05-18 Janus Weil <janus@gcc.gnu.org>janus2009-05-181-1/+8
| | | | | | | | | | | | | | | | | | | | PR fortran/40164 * primary.c (gfc_match_rvalue): Handle procedure pointer components in arrays. * resolve.c (resolve_ppc_call,resolve_expr_ppc): Resolve component and array references. (resolve_fl_derived): Procedure pointer components are not required to have constant array bounds in their return value. 2009-05-18 Janus Weil <janus@gcc.gnu.org> PR fortran/40164 * gfortran.dg/proc_ptr_comp_8.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147663 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-05-18 Janus Weil <janus@gcc.gnu.org>janus2009-05-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR fortran/36947 PR fortran/40039 * expr.c (gfc_check_pointer_assign): Check intents when comparing interfaces. * gfortran.h (typedef struct gfc_intrinsic_arg): Add 'intent' member. (gfc_compare_interfaces): Additional argument. * interface.c (operator_correspondence): Add check for equality of intents, and new argument 'intent_check'. (gfc_compare_interfaces): New argument 'intent_check', which is passed on to operator_correspondence. (check_interface1): Don't check intents when comparing interfaces. (compare_parameter): Do check intents when comparing interfaces. * intrinsic.c (add_sym): Add intents for arguments of intrinsic procedures. (add_sym_1,add_sym_1s,add_sym_1m,add_sym_2,add_sym_2s,add_sym_3, add_sym_3ml,add_sym_3red,add_sym_3s,add_sym_4): Use INTENT_IN by default. (add_sym_1_intent,add_sym_1s_intent,add_sym_2s_intent,add_sym_3s_intent) : New functions to add intrinsic symbols, specifying custom intents. (add_sym_4s,add_sym_5s): Add new arguments to specify intents. (add_functions,add_subroutines): Add intents for various intrinsics. * resolve.c (check_generic_tbp_ambiguity): Don't check intents when comparing interfaces. * symbol.c (gfc_copy_formal_args_intr): Copy intent. 2009-05-18 Janus Weil <janus@gcc.gnu.org> PR fortran/36947 PR fortran/40039 * gfortran.dg/interface_27.f90: New. * gfortran.dg/interface_28.f90: New. * gfortran.dg/proc_ptr_11.f90: Fixing invalid test case. * gfortran.dg/proc_ptr_result_1.f90: Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147655 138bc75d-0d04-0410-961f-82ee72b054a4
* PR fortran/31243fxcoudert2009-05-161-3/+25
| | | | | | | | | | | | | | | | | * resolve.c (resolve_substring): Don't allow too large substring indexes. (gfc_resolve_substring_charlen): Fix typo. (gfc_resolve_character_operator): Fix typo. (resolve_charlen): Catch unreasonably large string lengths. * simplify.c (gfc_simplify_len): Don't error out on LEN range checks. * gcc/testsuite/gfortran.dg/string_1.f90: New test. * gcc/testsuite/gfortran.dg/string_2.f90: New test. * gcc/testsuite/gfortran.dg/string_3.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147619 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-05-13 Steven G. Kargl <kargl@gcc.gnu.org>kargl2009-05-131-71/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * gfortran.h (gfc_code): Rename struct member expr to expr1. * openmp.c (resolve_omp_atomic): Update expr to expr1. * interface.c (gfc_extend_assign): Ditto. * trans-expr.c (gfc_conv_expr_reference, gfc_trans_assignment, gfc_trans_init_assign): Ditto. * dump-parse-tree.c (show_code_node): Ditto. * trans-openmp.c (gfc_trans_omp_atomic): Ditto. * trans-stmt.c ( gfc_trans_label_assign, gfc_trans_goto, gfc_trans_call, gfc_trans_return, gfc_trans_pause, gfc_trans_stop, gfc_trans_if_1, gfc_trans_arithmetic_if, gfc_trans_do_while, gfc_trans_integer_select, gfc_trans_logical_select, gfc_trans_character_select forall_make_variable_temp, check_forall_dependencies gfc_trans_forall_1, gfc_trans_where_2, gfc_trans_where_3 gfc_trans_where, gfc_trans_allocate, gfc_trans_deallocate): Ditto. * io.c (match_io_element, gfc_match_inquire): Ditto. * resolve.c (resolve_typebound_call, resolve_ppc_call, resolve_allocate_expr, resolve_allocate_deallocate, resolve_select, resolve_transfer, resolve_where, gfc_resolve_assign_in_forall, gfc_resolve_blocks, resolve_code, build_init_assign): Ditto. * st.c (gfc_free_statement): Ditto. * match.c (gfc_match_assignment, gfc_match_pointer_assignment, match_arithmetic_if, gfc_match_if, gfc_match_elseif gfc_match_stopcode, gfc_match_assign, gfc_match_goto, gfc_match_nullify, match_typebound_call, gfc_match_call gfc_match_select, match_simple_where, gfc_match_where gfc_match_elsewhere, match_simple_forall, gfc_match_forall): Ditto. * trans-io.c (gfc_trans_transfer): Ditto. * parse.c (parse_where_block, parse_if_block): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147497 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-05-12 Steven G. Kargl <kargl@gcc.gnu.org>kargl2009-05-131-5/+5
| | | | | | | | | | | | | | | * gfortran.h (gfc_code): Rename struct member label to label1. * dump-parse-tree.c (show_code_node): Update symbol. * trans-stmt.c (gfc_trans_label_assign, gfc_trans_goto, gfc_trans_arithmetic_if)": Ditto. * resolve.c (gfc_resolve_blocks, resolve_code): Ditto. * match.c (match_arithmetic_if, gfc_match_if, gfc_reference_st_label, gfc_match_assign, gfc_match_goto): Ditto. * parse.c (parse_do_block): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147489 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-05-13 Tobias Burnus <burnus@net-b.de>burnus2009-05-131-0/+1
| | | | | | | | | | | | | PR fortran/34153 * gfortran.h (gfc_exec_op): Add EXEC_END_PROCEDURE. * dump-parse-tree.c (show_code_node): Use EXEC_END_PROCEDURE. * trans.c (gfc_trans_code): Ditto. * resolve.c (resolve_code): Ditto. * st.c (gfc_free_statement): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147477 138bc75d-0d04-0410-961f-82ee72b054a4
* * resolve.c (check_host_association): Initialize tail.sje2009-05-111-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147381 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-05-11 Janus Weil <janus@gcc.gnu.org>janus2009-05-111-8/+6
| | | | | | | | | | | | | | | | PR fortran/40089 * resolve.c (resolve_fl_derived): Only return FAILURE if gfc_notify_std fails. 2009-05-11 Janus Weil <janus@gcc.gnu.org> PR fortran/40089 * gfortran.dg/proc_ptr_comp_7.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147379 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-05-06 Janus Weil <janus@gcc.gnu.org>janus2009-05-061-8/+154
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Paul Thomas <pault@gcc.gnu.org> PR fortran/39630 * decl.c (match_procedure_interface): New function to match the interface for a PROCEDURE statement. (match_procedure_decl): Call match_procedure_interface. (match_ppc_decl): New function to match the declaration of a procedure pointer component. (gfc_match_procedure): Call match_ppc_decl. (match_binding_attributes): Add new argument 'ppc' and handle the POINTER attribute for procedure pointer components. (match_procedure_in_type,gfc_match_generic): Added new argument to match_binding_attributes. * dump-parse-tree.c (show_expr,show_components,show_code_node): Handle procedure pointer components. * expr.c (free_expr0,gfc_copy_expr,gfc_simplify_expr): Handle EXPR_PPC. (gfc_check_pointer_assign): Handle procedure pointer components, but no full checking yet. (is_proc_ptr_comp): New function to determine if an expression is a procedure pointer component. * gfortran.h (expr_t): Add EXPR_PPC. (symbol_attribute): Add new member 'proc_pointer_comp'. (gfc_component): Add new member 'formal'. (gfc_exec_op): Add EXEC_CALL_PPC. (gfc_get_default_type): Changed first argument. (is_proc_ptr_comp): Add prototype. (gfc_match_varspec): Add new argument. * interface.c (compare_actual_formal): Handle procedure pointer components. * match.c (gfc_match_pointer_assignment,match_typebound_call): Handle procedure pointer components. * module.c (mio_expr): Handle EXPR_PPC. * parse.c (parse_derived): Handle procedure pointer components. * primary.c (gfc_match_varspec): Add new argument 'ppc_arg' and handle procedure pointer components. (gfc_variable_attr): Handle procedure pointer components. (gfc_match_rvalue): Added new argument to gfc_match_varspec and changed first argument of gfc_get_default_type. (match_variable): Added new argument to gfc_match_varspec. * resolve.c (resolve_entries,set_type,resolve_fl_parameter): Changed first argument of gfc_get_default_type. (resolve_structure_cons,resolve_actual_arglist): Handle procedure pointer components. (resolve_ppc_call): New function to resolve a call to a procedure pointer component (subroutine). (resolve_expr_ppc): New function to resolve a call to a procedure pointer component (function). (gfc_resolve_expr): Handle EXPR_PPC. (resolve_code): Handle EXEC_CALL_PPC. (resolve_fl_derived): Copy the interface for a procedure pointer component. (resolve_symbol): Fix overlong line. * st.c (gfc_free_statement): Handle EXEC_CALL_PPC. * symbol.c (gfc_get_default_type): Changed first argument. (gfc_set_default_type): Changed first argument of gfc_get_default_type. (gfc_add_component): Initialize ts.type to BT_UNKNOWN. * trans.h (gfc_conv_function_call): Renamed. * trans.c (gfc_trans_code): Handle EXEC_CALL_PPC. * trans-expr.c (gfc_conv_component_ref): Ditto. (gfc_conv_function_val): Rename to 'conv_function_val', add new argument 'expr' and handle procedure pointer components. (gfc_conv_operator_assign): Renamed gfc_conv_function_val. (gfc_apply_interface_mapping_to_expr): Handle EXPR_PPC. (gfc_conv_function_call): Rename to 'gfc_conv_procedure_call', add new argument 'expr' and handle procedure pointer components. (gfc_get_proc_ptr_comp): New function to get the backend decl for a procedure pointer component. (gfc_conv_function_expr): Renamed gfc_conv_function_call. (gfc_conv_structure): Handle procedure pointer components. * trans-intrinsic.c (gfc_conv_intrinsic_funcall, conv_generic_with_optional_char_arg): Renamed gfc_conv_function_call. * trans-stmt.h (gfc_get_proc_ptr_comp): Add prototype. * trans-stmt.c (gfc_trans_call): Renamed gfc_conv_function_call. * trans-types.h (gfc_get_ppc_type): Add prototype. * trans-types.c (gfc_get_ppc_type): New function to build a tree node for a procedure pointer component. (gfc_get_derived_type): Handle procedure pointer components. 2009-05-06 Janus Weil <janus@gcc.gnu.org> PR fortran/39630 * gfortran.dg/proc_decl_1.f90: Modified. * gfortran.dg/proc_ptr_comp_1.f90: New. * gfortran.dg/proc_ptr_comp_2.f90: New. * gfortran.dg/proc_ptr_comp_3.f90: New. * gfortran.dg/proc_ptr_comp_4.f90: New. * gfortran.dg/proc_ptr_comp_5.f90: New. * gfortran.dg/proc_ptr_comp_6.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147206 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-05-06 Tobias Burnus <burnus@net-b.de>burnus2009-05-061-2/+3
| | | | | | | | | | | | | | | | PR fortran/40041 * resolve.c (resolve_symbol): Print no warning for implicitly typed intrinsic functions. 2009-05-06 Tobias Burnus <burnus@net-b.de> PR fortran/40041 * gfortran.dg/intrinsic_2.f90: New test. * gfortran.dg/intrinsic.f90: Add old and this PR as comment. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147183 138bc75d-0d04-0410-961f-82ee72b054a4
OpenPOWER on IntegriCloud