Commit Graph

741 Commits

Author SHA1 Message Date
Thomas Koenig
0e533e5078 re PR fortran/56666 (Suppression flag for " DO loop at (1) will be executed zero times")
2013-08-12  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/56666
	* gfortran.h (gfc_option_t):  Add warn_zerotrip.
	* invoke.texi (-Wzerotrip):  Document option.
	* lang.opt (Wzerotrip):  Add.
	* options.c (gfc_init_options):  Initialize warn_zerotrip.
	(set_Wall): Add handling of warn_zerotrip.
	(gfc_handle_option):  Handle OPT_Wzerotrip.
	* resolve.c (gfc_resolve_iterator): Honor
	gfc_option.warn_zerotrip; update error message to show
	how to suppress the warning.

2013-08-12  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/56666
	* gfortran.dg/do_check_10.f90:  New test.
	* gfortran.dg/array_constructor_11.f90:  Add -Wzerotrip to dg-options.
	* gfortran.dg/array_constructor_18.f90:  Likewise.
	* gfortran.dg/array_constructor_22.f90:  Likewise.
	* gfortran.dg/coarray_15.f90:  Likewise.
	* gfortran.dg/do_1.f90:  Add -Wall to dg-options.
	* gfortran.dg/do_3.F90:  Add -Wzerotrip to dg-options.
	* gfortran.dg/do_check_5.f90:  Add -Wall to gd-options.

From-SVN: r201658
2013-08-12 05:50:03 +00:00
Janus Weil
11e5274a4b gfortran.h (gfc_get_code): Modified prototype.
2013-08-09  Janus Weil  <janus@gcc.gnu.org>

	* gfortran.h (gfc_get_code): Modified prototype.
	* class.c (finalize_component, finalization_scalarizer,
	finalization_get_offset, finalizer_insert_packed_call,
	generate_finalization_wrapper, gfc_find_derived_vtab,
	gfc_find_intrinsic_vtab): Use 'gfc_get_code'.
	* io.c (match_io_iterator, match_io_element, terminate_io, get_io_list,
	gfc_match_inquire): Call 'gfc_get_code' with argument.
	* match.c (match_simple_forall, gfc_match_forall, gfc_match_goto,
	gfc_match_nullify, gfc_match_call, match_simple_where, gfc_match_where):
	Ditto.
	* parse.c (new_level): Ditto.
	(add_statement): Use XCNEW.
	* resolve.c (resolve_entries, resolve_allocate_expr,
	resolve_select_type, build_assignment, build_init_assign): Call
	'gfc_get_code' with argument.
	* st.c (gfc_get_code): Add argument 'op'.
	* trans-expr.c (gfc_trans_class_array_init_assign): Call 'gfc_get_code'
	with argument.
	* trans-stmt.c (gfc_trans_allocate): Ditto.

From-SVN: r201635
2013-08-09 21:26:07 +02:00
Po-Chun Chang
502af49176 match.c (gfc_match_call): Exit loop after setting i.
* match.c (gfc_match_call): Exit loop after setting i.

        * resolve.c (resolve_variable): Exit loop after setting seen.

        * expr.c (gfc_check_pointer_assign): Exit loop after setting
        * warn.

        * trans-array.c (set_loop_bounds): Exit loop after setting
        nonoptional_arr.

        * trans-io.c (gfc_trans_transfer): Exit loop after setting
        * seen_vector.

From-SVN: r201316
2013-07-29 13:08:03 -06:00
Janus Weil
f005126418 re PR fortran/57966 ([OOP] Using a TBP to specify the shape of a dummy argument)
2013-07-25  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/57966
	* resolve.c (resolve_typebound_function): Make sure the declared type,
	including its type-bound procedures, is resolved before resolving the
	actual type-bound call.

2013-07-25  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/57966
	* gfortran.dg/typebound_call_25.f90: New.

From-SVN: r201254
2013-07-25 23:41:22 +02:00
Tobias Burnus
abc2d8074a trans-array.h (gfc_deallocate_alloc_comp_no_caf, [...]): New prototype.
2013-07-15  Tobias Burnus  <burnus@net-b.de>

        * trans-array.h (gfc_deallocate_alloc_comp_no_caf,
        gfc_reassign_alloc_comp_caf): New prototype.
        * trans-array.c (enum): Add DEALLOCATE_ALLOC_COMP_NO_CAF
        and COPY_ALLOC_COMP_CAF.
        (structure_alloc_comps): Handle it.
        (gfc_reassign_alloc_comp_caf,
        gfc_deallocate_alloc_comp_no_caf): New function.
        (gfc_alloc_allocatable_for_assignment): Call it.
        * trans-expr.c (gfc_trans_scalar_assign,
        gfc_trans_arrayfunc_assign, gfc_trans_assignment_1): Ditto.
        * parse.c (parse_derived): Correctly set coarray_comp.
        * resolve.c (resolve_symbol): Improve error wording.

2013-07-15  Tobias Burnus  <burnus@net-b.de>

        * gfortran.dg/coarray_lib_realloc_1.f90: New.
        * gfortran.dg/coarray/lib_realloc_1.f90: New.
        * gfortran.dg/coarray_6.f90: Add dg-error.

From-SVN: r200955
2013-07-15 10:25:48 +02:00
Tobias Burnus
dd28cdaabf resolve.c (get_temp_from_expr): Don't set FL_VARIABLE twice.
2013-06-20  Tobias Burnus  <burnus@net-b.de>

        * resolve.c (get_temp_from_expr): Don't set FL_VARIABLE twice.

From-SVN: r200234
2013-06-20 11:37:15 +02:00
Tobias Burnus
9d82744163 re PR fortran/57508 ([OOP] Intrinsic assignment+defined-assignment for comps: PROCEDURE attribute of '_F.DA0' conflicts with VARIABLE attribute)
2013-06-14  Tobias Burnus  <burnus@net-b.de>

        PR fortran/57508
        * resolve.c (get_temp_from_expr): Don't copy function
        result attributes to temporary.

2013-06-14  Tobias Burnus  <burnus@net-b.de>

        PR fortran/57508
        * gfortran.dg/defined_assignment_7.f90: New.

From-SVN: r200089
2013-06-14 13:24:27 +02:00
Janus Weil
582f2176b5 re PR fortran/54189 (ICE (segfault) with invalid assumed-size dummy)
2013-05-30  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/54189
	* resolve.c (check_assumed_size_reference): Check for e->ref.


2013-05-30  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/54189
	* gfortran.dg/assumed_size_1.f90: New.

From-SVN: r199445
2013-05-30 12:19:16 +02:00
Tobias Burnus
6d2bee95d8 re PR fortran/37336 ([F03] Finish derived-type finalization)
2013-05-28  Tobias Burnus  <burnus@net-b.de>

        PR fortran/37336
        * resolve.c (gfc_resolve_finalizers): Remove not implemented
        * error.

2013-05-28  Tobias Burnus  <burnus@net-b.de>

        PR fortran/37336
        * gfortran.dg/finalize_11.f90: New.
        * gfortran.dg/finalize_4.f03: Remove dg-error.
        * gfortran.dg/finalize_5.f03: Ditto.
        * gfortran.dg/finalize_6.f03: Ditto.
        * gfortran.dg/finalize_7.f03: Ditto.

From-SVN: r199388
2013-05-28 20:30:03 +02:00
Bud Davis
9281625be0 re PR fortran/50405 (allocation LOOP or SIGSEGV)
2013-05-27  Bud Davis  <jmdavis@link.com>

        PR fortran/50405
        * resolve.c (resolve_formal_arglist): Detect error when an
        * argument
        has the same name as the function.

2013-05-27  Bud Davis  <jmdavis@link.com>

        PR fortran/50405
        * gfortran.dg/stfunc_8.f90: New.

From-SVN: r199358
2013-05-27 16:16:36 +02:00
Tobias Burnus
bbf38bcf2d resolve.c (get_temp_from_expr): Change mangling to start always with a _.
2013-05-22  Tobias Burnus  <burnus@net-b.de>

        * resolve.c (get_temp_from_expr): Change mangling to
        start always with a _.

From-SVN: r199215
2013-05-22 21:24:29 +02:00
Tobias Burnus
ead3d0757a resolve.c (get_temp_from_expr): Fix temp var mangling.
2013-05-22  Tobias Burnus  <burnus@net-b.de>

        * resolve.c (get_temp_from_expr): Fix temp var mangling.

From-SVN: r199214
2013-05-22 21:14:51 +02:00
Tobias Burnus
28a595fc80 re PR fortran/57364 ([OOP] ICE gfc_enforce_clean_symbol_state)
2013-05-22  Tobias Burnus  <burnus@net-b.de>

        PR fortran/57364
        * resolve.c (get_temp_from_expr): Commit created sym.

2013-05-22  Tobias Burnus  <burnus@net-b.de>

        PR fortran/57364
        * gfortran.dg/defined_assignment_6.f90: New.

From-SVN: r199196
2013-05-22 14:43:55 +02:00
Tobias Burnus
77f8682b05 re PR fortran/48858 (Incorrect error for same binding label on two generic interface specifics)
2013-05-20  Tobias Burnus  <burnus@net-b.de>

        PR fortran/48858
        PR fortran/55465
        * decl.c (add_global_entry): Add sym_name.
        * parse.c (add_global_procedure): Ditto.
        * resolve.c (resolve_bind_c_derived_types): Handle multiple decl for
        a procedure.
        (resolve_global_procedure): Handle gsym->ns pointing to a module.
        * trans-decl.c (gfc_get_extern_function_decl): Ditto.

2013-05-20  Tobias Burnus  <burnus@net-b.de>

        PR fortran/48858
        PR fortran/55465
        * gfortran.dg/binding_label_tests_10_main.f03: Update dg-error.
        * gfortran.dg/binding_label_tests_11_main.f03: Ditto.
        * gfortran.dg/binding_label_tests_13_main.f03: Ditto.
        * gfortran.dg/binding_label_tests_3.f03: Ditto.
        * gfortran.dg/binding_label_tests_4.f03: Ditto.
        * gfortran.dg/binding_label_tests_5.f03: Ditto.
        * gfortran.dg/binding_label_tests_6.f03: Ditto.
        * gfortran.dg/binding_label_tests_7.f03: Ditto.
        * gfortran.dg/binding_label_tests_8.f03: Ditto.
        * gfortran.dg/c_loc_tests_12.f03: Fix test case.
        * gfortran.dg/binding_label_tests_24.f90: New.
        * gfortran.dg/binding_label_tests_25.f90: New.

From-SVN: r199120
2013-05-20 22:08:05 +02:00
Tobias Burnus
f11de7c5f8 re PR fortran/48858 (Incorrect error for same binding label on two generic interface specifics)
2013-05-20  Tobias Burnus  <burnus@net-b.de>

        PR fortran/48858
        * decl.c (add_global_entry): Use nonbinding name
        only for F2003 or if no binding label exists.
        (gfc_match_entry): Update calls.
        * parse.c (gfc_global_used): Improve error message.
        (add_global_procedure): Use nonbinding name
        only for F2003 or if no binding label exists.
        (gfc_parse_file): Update call.
        * resolve.c (resolve_global_procedure): Use binding
        name when available.
        * trans-decl.c (gfc_get_extern_function_decl): Ditto.

2013-05-20  Tobias Burnus  <burnus@net-b.de>

        PR fortran/48858
        * gfortran.dg/binding_label_tests_17.f90: New.
        * gfortran.dg/binding_label_tests_18.f90: New.
        * gfortran.dg/binding_label_tests_19.f90: New.
        * gfortran.dg/binding_label_tests_20.f90: New.
        * gfortran.dg/binding_label_tests_21.f90: New.
        * gfortran.dg/binding_label_tests_22.f90: New.
        * gfortran.dg/binding_label_tests_23.f90: New.

From-SVN: r199119
2013-05-20 22:05:40 +02:00
Tobias Burnus
878cdb7b38 re PR fortran/48858 (Incorrect error for same binding label on two generic interface specifics)
2013-05-20  Tobias Burnus  <burnus@net-b.de>

        PR fortran/48858
        * decl.c (gfc_match_bind_c_stmt): Add gfc_notify_std.
        * match.c (gfc_match_common): Don't add commons to gsym.
        * resolve.c (resolve_common_blocks): Add to gsym and
        add checks.
        (resolve_bind_c_comms): Remove.
        (resolve_types): Remove call to the latter.
        * trans-common.c (gfc_common_ns): Remove static var.
        (gfc_map_of_all_commons): Add static var.
        (build_common_decl): Correctly handle binding label.

2013-05-20  Tobias Burnus  <burnus@net-b.de>

        PR fortran/48858
        * gfortran.dg/test_common_binding_labels.f03: Update dg-error.
        * gfortran.dg/test_common_binding_labels_2_main.f03: Ditto.
        * gfortran.dg/test_common_binding_labels_3_main.f03: Ditto.
        * gfortran.dg/common_18.f90: New.
        * gfortran.dg/common_19.f90: New.
        * gfortran.dg/common_20.f90: New.
        * gfortran.dg/common_21.f90: New.

From-SVN: r199118
2013-05-20 22:03:48 +02:00
Tobias Burnus
f0470cc59f resolve.c (conformable_arrays): Avoid segfault when ar.start[i] == NULL.
2013-05-05  Tobias Burnus  <burnus@net-b.de>

        * resolve.c (conformable_arrays): Avoid segfault
        when ar.start[i] == NULL.

2013-05-05  Tobias Burnus  <burnus@net-b.de>

        * gfortran.dg/allocate_with_source_3.f90: New.

From-SVN: r198610
2013-05-05 16:04:07 +02:00
Tobias Burnus
1634e53f83 re PR fortran/57142 (SIZE/SHAPE overflow despite kind=8)
2013-05-02  Tobias Burnus  <burnus@net-b.de>

        PR fortran/57142
        * simplify.c (gfc_simplify_size): Renamed from
        simplify_size; fix kind=8 handling.
        (gfc_simplify_size): New function.
        (gfc_simplify_shape): Add range check.
        * resolve.c (resolve_function): Fix handling
        for ISYM_SIZE.

2013-05-02  Tobias Burnus  <burnus@net-b.de>

        PR fortran/57142
        * gfortran.dg/size_kind_2.f90: New.
        * gfortran.dg/size_kind_3.f90: New.

From-SVN: r198549
2013-05-02 18:29:14 +02:00
Tobias Burnus
36abe89587 expr.c (find_array_element): Don't copy expr.
2013-04-18  Tobias Burnus  <burnus@net-b.de>

        * expr.c (find_array_element): Don't copy expr.
        * data.c (create_character_initializer): Free expr.
        * frontend-passes.c (combine_array_constructor): Ditto.
        * match.c (match_typebound_call, gfc_match_select_type): Ditto.
        * resolve.c (resolve_typebound_function): Free gfc_ref.

From-SVN: r198068
2013-04-18 20:59:38 +02:00
Tobias Burnus
e7ac6a7ceb re PR fortran/39505 (Consider a 'no arg check' directive)
2013-04-12  Tobias Burnus  <burnus@net-b.de>

        PR fortran/39505
        * decl.c (ext_attr_list): Add EXT_ATTR_NO_ARG_CHECK.
        * gfortran.h (ext_attr_id_t): Ditto.
        * gfortran.texi (GNU Fortran Compiler Directives):
        Document it.
        * interface.c (compare_type_rank): Ignore rank for NO_ARG_CHECK.
        (compare_parameter): Ditto - and regard as unlimited polymorphic.
        * resolve.c (resolve_symbol, resolve_variable): Add same
        * constraint
        checks as for TYPE(*); turn dummy to TYPE(*),dimension(*).
        (gfc_explicit_interface_required): Require explicit interface
        for NO_ARG_CHECK.

2013-04-12  Tobias Burnus  <burnus@net-b.de>

        PR fortran/39505
        * gfortran.dg/no_arg_check_1.f90: New.
        * gfortran.dg/no_arg_check_2.f90: New.
        * gfortran.dg/no_arg_check_3.f90: New.

From-SVN: r198011
2013-04-16 22:54:21 +02:00
Tobias Burnus
adede54ce9 class.c (gfc_find_intrinsic_vtab): Removed unused var.
2013-04-15  Tobias Burnus  <burnus@net-b.de>

        * class.c (gfc_find_intrinsic_vtab): Removed unused var.
        * dependency.c (check_data_pointer_types): Fix check.
        * frontend-passes.c (check_data_pointer_types): Remove
        superfluous statement.
        * parse.c (decode_omp_directive): Add missing break.
        * resolve.c (resolve_typebound_subroutine: Free variable.
        * trans-decl.c (create_function_arglist): Correct condition.

From-SVN: r197961
2013-04-15 11:40:28 +02:00
Janus Weil
96486998bc re PR fortran/56261 ([OOP] seg fault call procedure pointer on polymorphic array)
2013-04-12  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/56261
	* gfortran.h (gfc_explicit_interface_required): New prototype.
	* expr.c (gfc_check_pointer_assign): Check if an explicit interface is
	required in a proc-ptr assignment.
	* interface.c (check_result_characteristics): Extra check.
	* resolve.c (gfc_explicit_interface_required): New function.
	(resolve_global_procedure): Use new function
	'gfc_explicit_interface_required'. Do a full interface check.


2013-04-12  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/56261
	* gfortran.dg/auto_char_len_4.f90: Add -pedantic. Changed error.
	* gfortran.dg/assumed_rank_4.f90: Modified error wording.
	* gfortran.dg/block_11.f90: Fix invalid test case.
	* gfortran.dg/function_types_3.f90: Add new error message.
	* gfortran.dg/global_references_1.f90: Ditto.
	* gfortran.dg/import2.f90: Remove unneeded parts.
	* gfortran.dg/import6.f90: Fix invalid test case.
	* gfortran.dg/proc_decl_2.f90: Ditto.
	* gfortran.dg/proc_decl_9.f90: Ditto.
	* gfortran.dg/proc_decl_18.f90: Ditto.
	* gfortran.dg/proc_ptr_40.f90: New.
	* gfortran.dg/whole_file_7.f90: Modified error wording.
	* gfortran.dg/whole_file_16.f90: Ditto.
	* gfortran.dg/whole_file_17.f90: Add -pedantic.
	* gfortran.dg/whole_file_18.f90: Modified error wording.
	* gfortran.dg/whole_file_20.f03: Ditto.
	* gfortran.fortran-torture/execute/intrinsic_associated.f90: Fix
	invalid test case.

From-SVN: r197922
2013-04-12 16:21:39 +02:00
Janne Blomqvist
524af0d6c7 Replace enum gfc_try with bool type.
2013-04-11  Janne Blomqvist  <jb@gcc.gnu.org>

        * gfortran.h: Remove enum gfc_try, replace gfc_try with bool type.
        * arith.c: Replace gfc_try with bool type.
        * array.c: Likewise.
        * check.c: Likewise.
        * class.c: Likewise.
        * cpp.c: Likewise.
        * cpp.h: Likewise.
        * data.c: Likewise.
        * data.h: Likewise.
        * decl.c: Likewise.
        * error.c: Likewise.
        * expr.c: Likewise.
        * f95-lang.c: Likewise.
        * interface.c: Likewise.
        * intrinsic.c: Likewise.
        * intrinsic.h: Likewise.
        * io.c: Likewise.
        * match.c: Likewise.
        * match.h: Likewise.
        * module.c: Likewise.
        * openmp.c: Likewise.
        * parse.c: Likewise.
        * parse.h: Likewise.
        * primary.c: Likewise.
        * resolve.c: Likewise.
        * scanner.c: Likewise.
        * simplify.c: Likewise.
        * symbol.c: Likewise.
        * trans-intrinsic.c: Likewise.
        * trans-openmp.c: Likewise.
        * trans-stmt.c: Likewise.
        * trans-types.c: Likewise.

From-SVN: r197682
2013-04-11 00:36:58 +03:00
Tobias Burnus
cadddfdda2 re PR fortran/38536 (ICE with C_LOC in resolve.c due to not properly going through expr->ref)
2013-03-25  Tobias Burnus  <burnus@net-b.de>

        PR fortran/38536
        PR fortran/38813
        PR fortran/38894
        PR fortran/39288
        PR fortran/40963
        PR fortran/45824
        PR fortran/47023
        PR fortran/47034
        PR fortran/49023
        PR fortran/50269
        PR fortran/50612
        PR fortran/52426
        PR fortran/54263
        PR fortran/55343
        PR fortran/55444
        PR fortran/55574
        PR fortran/56079
        PR fortran/56378
        * check.c (gfc_var_strlen): Properly handle 0-sized string.
        (gfc_check_c_sizeof): Use is_c_interoperable, add checks.
        (is_c_interoperable, gfc_check_c_associated, gfc_check_c_f_pointer,
        gfc_check_c_f_procpointer, gfc_check_c_funloc, gfc_check_c_loc): New
        functions.
        * expr.c (check_inquiry): Add c_sizeof, compiler_version and
        compiler_options.
        (gfc_check_pointer_assign): Refine function result check.
        gfortran.h (gfc_isym_id): Add GFC_ISYM_C_ASSOCIATED,
        GFC_ISYM_C_F_POINTER, GFC_ISYM_C_F_PROCPOINTER, GFC_ISYM_C_FUNLOC,
        GFC_ISYM_C_LOC.
        (iso_fortran_env_symbol, iso_c_binding_symbol): Handle
        NAMED_SUBROUTINE.
        (generate_isocbinding_symbol): Update prototype.
        (get_iso_c_sym): Remove.
        (gfc_isym_id_by_intmod, gfc_isym_id_by_intmod_sym): New prototypes.
        * intrinsic.c (gfc_intrinsic_subroutine_by_id): New function.
        (gfc_intrinsic_sub_interface): Use it.
        (add_functions, add_subroutines): Add missing C-binding intrinsics.
        (gfc_intrinsic_func_interface): Add special case for c_loc.
        gfc_isym_id_by_intmod, gfc_isym_id_by_intmod_sym): New functions.
        (gfc_intrinsic_func_interface, gfc_intrinsic_sub_interface): Use them.
        * intrinsic.h (gfc_check_c_associated, gfc_check_c_f_pointer,
        gfc_check_c_f_procpointer, gfc_check_c_funloc, gfc_check_c_loc,
        gfc_resolve_c_loc, gfc_resolve_c_funloc): New prototypes.
        * iresolve.c (gfc_resolve_c_loc, gfc_resolve_c_funloc): New
        functions.
        * iso-c-binding.def: Split PROCEDURE into NAMED_SUBROUTINE and
        NAMED_FUNCTION.
        * iso-fortran-env.def: Add NAMED_SUBROUTINE for completeness.
        * module.c (create_intrinsic_function): Support subroutines and
        derived-type results.
        (use_iso_fortran_env_module): Update calls.
        (import_iso_c_binding_module): Ditto; update calls to
        generate_isocbinding_symbol.
        * resolve.c (find_arglists): Skip for intrinsic symbols.
        (gfc_resolve_intrinsic): Find intrinsic subs via id.
        (is_scalar_expr_ptr, gfc_iso_c_func_interface,
        set_name_and_label, gfc_iso_c_sub_interface): Remove.
        (resolve_function, resolve_specific_s0): Remove calls to those.
        (resolve_structure_cons): Fix handling.
        * symbol.c (gen_special_c_interop_ptr): Update c_ptr/c_funptr
        generation.
        (gen_cptr_param, gen_fptr_param, gen_shape_param,
        build_formal_args, get_iso_c_sym): Remove.
        (std_for_isocbinding_symbol): Handle NAMED_SUBROUTINE.
        (generate_isocbinding_symbol): Support hidden symbols and
        using c_ptr/c_funptr symtrees for nullptr defs.
        * target-memory.c (gfc_target_encode_expr): Fix handling
        of c_ptr/c_funptr.
        * trans-expr.c (conv_isocbinding_procedure): Remove.
        (gfc_conv_procedure_call): Remove call to it.
        (gfc_trans_subcomponent_assign, gfc_conv_expr): Update handling
        of c_ptr/c_funptr.
        * trans-intrinsic.c (conv_isocbinding_function,
        conv_isocbinding_subroutine): New.
        (gfc_conv_intrinsic_function, gfc_conv_intrinsic_subroutine):
        Call them.
        * trans-io.c (transfer_expr): Fix handling of c_ptr/c_funptr.
        * trans-types.c (gfc_typenode_for_spec,
        gfc_get_derived_type): Ditto.
        (gfc_init_c_interop_kinds): Handle NAMED_SUBROUTINE.

2013-03-25  Tobias Burnus  <burnus@net-b.de>

        PR fortran/38536
        PR fortran/38813
        PR fortran/38894
        PR fortran/39288
        PR fortran/40963
        PR fortran/45824
        PR fortran/47023
        PR fortran/47034
        PR fortran/49023
        PR fortran/50269
        PR fortran/50612
        PR fortran/52426
        PR fortran/54263
        PR fortran/55343
        PR fortran/55444
        PR fortran/55574
        PR fortran/56079
        PR fortran/56378
        * gfortran.dg/c_assoc_2.f03: Update dg-error wording.
        * gfortran.dg/c_f_pointer_shape_test.f90: Ditto.
        * gfortran.dg/c_f_pointer_shape_tests_3.f03: Ditto.
        * gfortran.dg/c_f_pointer_tests_5.f90: Ditto.
        * gfortran.dg/c_funloc_tests_2.f03: Ditto.
        * gfortran.dg/c_funloc_tests_5.f03: Ditto.
        * gfortran.dg/c_funloc_tests_6.f90: Ditto.
        * gfortran.dg/c_loc_tests_10.f03: Add -std=f2008.
        * gfortran.dg/c_loc_tests_11.f03: Ditto, update dg-error.
        * gfortran.dg/c_loc_tests_16.f90: Ditto.
        * gfortran.dg/c_loc_tests_4.f03: Ditto.
        * gfortran.dg/c_loc_tests_15.f90: Update dg-error wording.
        * gfortran.dg/c_loc_tests_3.f03: Valid since F2003 TC5.
        * gfortran.dg/c_loc_tests_8.f03: Ditto.
        * gfortran.dg/c_ptr_tests_14.f90: Update scan-tree-dump-times.
        * gfortran.dg/c_ptr_tests_15.f90: Ditto.
        * gfortran.dg/c_sizeof_1.f90: Fix invalid code.
        * gfortran.dg/iso_c_binding_init_expr.f03: Update dg-error wording.
        * gfortran.dg/pr32601_1.f03: Ditto.
        * gfortran.dg/storage_size_2.f08: Remove dg-error.
        * gfortran.dg/blockdata_7.f90: New.
        * gfortran.dg/c_assoc_4.f90: New.
        * gfortran.dg/c_f_pointer_tests_6.f90: New.
        * gfortran.dg/c_f_pointer_tests_7.f90: New.
        * gfortran.dg/c_funloc_tests_8.f90: New.
        * gfortran.dg/c_loc_test_17.f90: New.
        * gfortran.dg/c_loc_test_18.f90: New.
        * gfortran.dg/c_loc_test_19.f90: New.
        * gfortran.dg/c_loc_test_20.f90: New.
        * gfortran.dg/c_sizeof_5.f90: New.
        * gfortran.dg/iso_c_binding_rename_3.f90: New.
        * gfortran.dg/transfer_resolve_2.f90: New.
        * gfortran.dg/transfer_resolve_3.f90: New.
        * gfortran.dg/transfer_resolve_4.f90: New.
        * gfortran.dg/pr32601.f03: Update dg-error.
        * gfortran.dg/c_ptr_tests_13.f03: Update dg-error.
        * gfortran.dg/c_ptr_tests_9.f03: Fix test case.

From-SVN: r197053
2013-03-25 16:40:26 +01:00
Tobias Burnus
9fa5223135 gfortran.h (gfc_option_t): Remove flag_whole_file.
2013-03-18  Tobias Burnus  <burnus@net-b.de>

        * gfortran.h (gfc_option_t): Remove flag_whole_file.
        * invoke.texi (-fno-whole-file): Remove.
        * lang.opt (fwhole-file): Change to Ignore.
        * options.c (gfc_init_options, gfc_post_options,
        gfc_handle_option): Remove !flag_whole_file handling
        * parse.c (resolve_all_program_units,
        * translate_all_program_units,
        gfc_parse_file): Ditto.
        * resolve.c (resolve_global_procedure): Ditto.
        * trans-decl.c (gfc_get_symbol_decl,
        * gfc_get_extern_function_decl,
        gfc_create_module_variable): Ditto.
        * trans-types.c (gfc_get_derived_type): Ditto.

From-SVN: r196773
2013-03-18 10:50:23 +01:00
Paul Thomas
8ec4321faf re PR fortran/56575 (An invalid OO code causes ICE)
2013-03-10  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/56575
	* expr.c (gfc_default_initializer): Check that a class declared
	type has any components.
	* resolve.c (resolve_fl_derived0): On failing the test for C437
	set the type to BT_UNKNOWN to prevent repeat error messages.
2013-03-10  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/56575
	* gfortran.dg/class_56.f90: New test.

From-SVN: r196580
2013-03-10 13:23:58 +00:00
Joseph Myers
f4aef5ac41 resolve.c (generate_component_assignments): Don't use UTF-8 ligature in diagnostic.
* resolve.c (generate_component_assignments): Don't use UTF-8
	ligature in diagnostic.

From-SVN: r196242
2013-02-24 01:07:35 +00:00
Tobias Burnus
fab99ea2d2 re PR fortran/53818 (-finit-local-zero -fno-automatic: Function result cannot have initializer)
2013-02-15  Tobias Burnus  <burnus@net-b.de>

        PR fortran/53818
        * resolve.c (apply_default_init_local): Don't create an
        initializer for a result variable.

2013-02-15  Tobias Burnus  <burnus@net-b.de>

        PR fortran/53818
        * gfortran.dg/init_flag_11.f90: New.

From-SVN: r196073
2013-02-15 09:50:37 +01:00
Janus Weil
fdb1fa9ebe re PR fortran/46952 ([OOP] Spurious "recursive call" error with type bound procedure)
2013-02-12  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/46952
	* resolve.c (resolve_call): Do not check deferred procedures for
	recursiveness.


2013-02-12  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/46952
	* gfortran.dg/typebound_deferred_1.f90: New.

From-SVN: r195975
2013-02-12 13:15:26 +01:00
Mikael Morin
49c8d79b27 re PR fortran/54195 ([OOP] IMPORT fails with GENERIC TBP: "is already present in the interface")
fortran/
	PR fortran/54195
	* resolve.c (resolve_typebound_procedures): Recurse through
	resolve_symbol.

testsuite/
	PR fortran/54195
	* gfortran.dg/typebound_operator_19.f90: New test.
	* gfortran.dg/typebound_assignment_4.f90: New test.

From-SVN: r195730
2013-02-04 19:06:06 +00:00
Mikael Morin
4af8d042f8 re PR fortran/54107 ([F03] Memory hog with abstract interface)
fortran/
	PR fortran/54107
	PR fortran/54195
	* gfortran.h (struct gfc_symbol): New field 'resolved'.
	* resolve.c (resolve_fl_var_and_proc): Don't skip result symbols.
	(resolve_symbol): Skip duplicate calls.  Don't check the current
	namespace.

testsuite/
	PR fortran/54107
	* gfortran.dg/recursive_interface_1.f90: New test.

From-SVN: r195729
2013-02-04 18:34:30 +00:00
Janus Weil
4cbc903996 re PR fortran/54107 ([F03] Memory hog with abstract interface)
2013-01-29  Janus Weil  <janus@gcc.gnu.org>
	    Mikael Morin <mikael@gcc.gnu.org>

	PR fortran/54107
	* gfortran.h (gfc_component): Delete members 'formal' and 'formal_ns'.
	(gfc_copy_formal_args,gfc_copy_formal_args_ppc,gfc_expr_replace_symbols,
	gfc_expr_replace_comp): Delete.
	(gfc_sym_get_dummy_args): New prototype.
	* dependency.c (gfc_check_fncall_dependency): Use
	'gfc_sym_get_dummy_args'.
	* expr.c (gfc_is_constant_expr): Ditto.
	(replace_symbol,gfc_expr_replace_symbols,replace_comp,
	gfc_expr_replace_comp): Deleted.
	* frontend-passes.c (doloop_code,do_function): Use
	'gfc_sym_get_dummy_args'.
	* interface.c (gfc_check_operator_interface,gfc_compare_interfaces,
	gfc_procedure_use,gfc_ppc_use,gfc_arglist_matches_symbol,
	gfc_check_typebound_override): Ditto.
	* module.c (MOD_VERSION): Bump module version.
	(mio_component): Do not read/write 'formal' and 'formal_ns'.
	* resolve.c (resolve_procedure_interface,resolve_fl_derived0): Do not
	copy formal args, but just keep a pointer to the interface.
	(resolve_function,resolve_call,resolve_typebound_generic_call,
	resolve_ppc_call,resolve_expr_ppc,generate_component_assignments,
	resolve_fl_procedure,gfc_resolve_finalizers,check_generic_tbp_ambiguity,
	resolve_typebound_procedure,check_uop_procedure): Use
	'gfc_sym_get_dummy_args'.
	* symbol.c (free_components): Do not free 'formal' and 'formal_ns'.
	(gfc_copy_formal_args,gfc_copy_formal_args_ppc): Deleted.
	(gfc_sym_get_dummy_args): New function.
	* trans-array.c (get_array_charlen,gfc_walk_elemental_function_args):
	Use 'gfc_sym_get_dummy_args'.
	* trans-decl.c (build_function_decl,create_function_arglist,
	build_entry_thunks,init_intent_out_dt,gfc_trans_deferred_vars,
	add_argument_checking): Ditto.
	* trans-expr.c (gfc_map_fcn_formal_to_actual,gfc_conv_procedure_call,
	gfc_conv_statement_function): Ditto.
	* trans-stmt.c (gfc_conv_elemental_dependencies): Ditto.
	* trans-types.c (create_fn_spec,gfc_get_function_type): Ditto.


2013-01-29  Janus Weil  <janus@gcc.gnu.org>
	    Mikael Morin <mikael@gcc.gnu.org>

	PR fortran/54107
	* gfortran.dg/proc_ptr_comp_36.f90: New.

Co-Authored-By: Mikael Morin <mikael@gcc.gnu.org>

From-SVN: r195562
2013-01-29 22:40:51 +01:00
Paul Thomas
aa27186087 [multiple changes]
2013-01-27 Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/55789
	PR fortran/56047
	* gfortran.h : Add associate_var to symbol_attr.
	* resolve.c (resolve_assoc_var): Set associate_var attribute.
	If the target class_ok is set, set it for the associate
	variable.
	* check.c (allocatable_check): Associate variables should not
	have the allocatable attribute even if their symbols do.
	* class.c (gfc_build_class_symbol): Symbols with associate_var
	set will always have a good class container.

2013-01-27  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/55789
	* gfortran.dg/associate_14.f90: New test.

	PR fortran/56047
	* gfortran.dg/associate_13.f90: New test.

From-SVN: r195492
2013-01-27 07:09:06 +00:00
Janus Weil
ad3e2ad2ff re PR fortran/56081 (Seg fault ICE on select with bad case)
2013-01-23  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/56081
	* resolve.c (resolve_select): Add argument 'select_type', reject
	non-scalar expressions.
	(resolve_select_type,resolve_code): Pass new argument to
	'resolve_select'.


2013-01-23  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/56081
	* gfortran.dg/select_8.f90: New.

From-SVN: r195412
2013-01-23 22:38:40 +01:00
Richard Sandiford
d1e082c2c2 Update copyright years in gcc/
From-SVN: r195098
2013-01-10 20:38:27 +00:00
Tobias Burnus
d0841b5b27 re PR fortran/55758 (LOGICAL and BIND(C): Reject kind=2/4/8/16 with -std=f2008, improve warning, switch to nonBOOLEAN_TYPE for those)
2013-01-09  Tobias Burnus  <burnus@net-b.de>

        PR fortran/55758
        * resolve.c (resolve_symbol): Reject non-C_Bool logicals
        in BIND(C) procedures with -std=f*.

2013-01-09  Tobias Burnus  <burnus@net-b.de>

        PR fortran/55758
        * gfortran.dg/bind_c_bool_1.f90: New.
        * gfortran.dg/do_5.f90: Add dg-warning.

From-SVN: r195055
2013-01-09 17:20:33 +01:00
Tobias Burnus
e35e87dc46 re PR fortran/55763 (Issues with some simpler CLASS(*) programs)
2013-01-07  Tobias Burnus  <burnus@net-b.de>

        PR fortran/55763
        * gfortran.h (gfc_check_assign_symbol): Update prototype.
        * decl.c (add_init_expr_to_sym, do_parm): Update call.
        * expr.c (gfc_check_assign_symbol): Handle BT_CLASS and
        improve error location; support components.
        (gfc_check_pointer_assign): Handle component assignments.
        * resolve.c (resolve_fl_derived0): Call gfc_check_assign_symbol.
        (resolve_values): Update call.
        (resolve_structure_cons): Avoid double diagnostic.

2013-01-07  Tobias Burnus  <burnus@net-b.de>

        PR fortran/55763
        * gfortran.dg/pointer_init_2.f90: Update dg-error.
        * gfortran.dg/pointer_init_7.f90: New.

From-SVN: r194990
2013-01-07 19:30:11 +01:00
Tobias Burnus
55d8631bfa re PR fortran/55763 (Issues with some simpler CLASS(*) programs)
2012-01-07  Tobias Burnus  <burnus@net-b.de>

        PR fortran/55763
        * resolve.c (resolve_select_type): Reject intrinsic types for
        a non-unlimited-polymorphic selector.

2012-01-07  Tobias Burnus  <burnus@net-b.de>

        PR fortran/55763
        * gfortran.dg/select_type_32.f90: New.

From-SVN: r194962
2013-01-07 09:36:16 +01:00
Mikael Morin
d932cea872 re PR fortran/42769 ([OOP] ICE in resolve_typebound_procedure)
PR fortran/42769
	PR fortran/45836
	PR fortran/45900
	* module.c (read_module): Don't reuse local symtree if the associated
	symbol isn't exactly the one wanted.  Don't reuse local symtree if it is
	ambiguous.
	* resolve.c (resolve_call): Use symtree's name instead of symbol's to
	lookup the symtree.

	PR fortran/42769
	PR fortran/45836
	PR fortran/45900
	* gfortran.dg/use_23.f90: New test.
	* gfortran.dg/use_24.f90: New test.
	* gfortran.dg/use_25.f90: New test.
	* gfortran.dg/use_26.f90: New test.
	* gfortran.dg/use_27.f90: New test.

From-SVN: r194949
2013-01-06 15:50:09 +00:00
Paul Thomas
e4821cd867 re PR fortran/55172 ([OOP] gfc_variable_attr(): Bad array reference in SELECT TYPE)
2013-01-04  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/55172
	* match.c (copy_ts_from_selector_to_associate): Remove call to
	gfc_resolve_expr and replace it with explicit setting of the
	array reference type.
	* resolve.c (resolve_select_type): It is an error if the
	selector is coindexed.

2013-01-04  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/55172
	* gfortran.dg/select_type_31.f03: New test.

From-SVN: r194916
2013-01-04 20:50:15 +00:00
Tobias Burnus
5cf8132adb re PR fortran/54884 (Externally used PRIVATE module procedure wrongly marked as TREE_PUBLIC()=0)
2012-12-23  Tobias Burnus  <burnus@net-b.de>

        PR fortran/54884
        * module.c (write_symbol1_recursion): Set attr.public_use.
        * interface.c (check_sym_interfaces, check_uop_interfaces,
        gfc_check_interfaces): Remove attr.public_use code.
        * resolve.c (resolve_function, resolve_variable,
        resolve_typebound_procedure): Ditto.

2012-12-23  Tobias Burnus  <burnus@net-b.de>

        PR fortran/54884
        * gfortran.dg/public_private_module_8.f90: New.

From-SVN: r194706
2012-12-23 19:43:32 +01:00
Tobias Burnus
4038d0fb1f re PR fortran/55763 (Issues with some simpler CLASS(*) programs)
2012-12-21  Tobias Burnus  <burnus@net-b.de>

        PR fortran/55763
        * module.c (mio_component): Don't skip _hash's initializer.
        * resolve.c (resolve_select_type): Add an assert.
        * trans-expr.c (gfc_conv_procedure_call): Handle
        INTENT(OUT) for UNLIMIT_POLY.

2012-12-21  Tobias Burnus  <burnus@net-b.de>

        PR fortran/55763
        * gfortran.dg/unlimited_polymorphic_6.f90: New.

From-SVN: r194696
2012-12-22 18:27:03 +01:00
Paul Thomas
4cc7046660 re PR fortran/55763 (Issues with some simpler CLASS(*) programs)
2012-12-21  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/55763
	* match.c (select_type_set_tmp): Return is a derived type or
	class typespec has no derived type.
	* resolve.c (resolve_fl_var_and_proc): Exclude select type
	temporaries from 'pointer'.
	(resolve_symbol): Exclude select type temporaries from tests
	for assumed size and assumed rank.

2012-12-21  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/55763
	* gfortran.dg/unlimited_polymorphic_4.f03: New test.

From-SVN: r194663
2012-12-21 14:29:34 +00:00
Paul Thomas
8b7043164f array.c (resolve_array_list): Apply C4106.
2012-12-19  Paul Thomas  <pault@gcc.gnu.org>

	* array.c (resolve_array_list): Apply C4106.
	* check.c (gfc_check_same_type_as): Exclude polymorphic
	entities from check for extensible types. Improved error
	for disallowed argument types to name the offending type.
	* class.c : Update copyright date.
	(gfc_class_null_initializer): Add argument for initialization
	expression and deal with unlimited polymorphic typespecs.
	(get_unique_type_string): Give unlimited polymorphic
	entities a type string.
	(gfc_intrinsic_hash_value): New function.
	(gfc_build_class_symbol): Incorporate unlimited polymorphic
	entities.
	(gfc_find_derived_vtab): Deal with unlimited polymorphic
	entities.
	(gfc_find_intrinsic_vtab): New function.
	* decl.c (gfc_match_decl_type_spec): Match typespec for
	unlimited polymorphic type.
	(gfc_match_data_decl): Skip to 'ok' if unlimited polymorphic.
	expr.c (gfc_check_pointer_assign): Apply C717.  If unlimited
	polymorphic lvalue, find rvalue vtable for all typespecs,
	except unlimited polymorphic expressions.
	(gfc_check_vardef_context): Handle unlimited polymorphic
	entities.
	* gfortran.h : Add unlimited polymorphic attribute. Add
	second arg to gfc_class_null_initializer primitive and
	primitive for gfc_find_intrinsic_vtab.  Add UNLIMITED_POLY
	to detect unlimited polymorphic expressions.
	* interface.c (gfc_compare_types): If expr1 is unlimited
	polymorphic, always return 1. If expr2 is unlimited polymorphic
	enforce C717.
	(gfc_compare_interfaces): Skip past conditions that do not
	apply for unlimited polymorphic entities.
	(compare_parameter): Make sure that an unlimited polymorphic,
	allocatable or pointer, formal argument is matched by an
	unlimited polymorphic actual argument.
	(compare_actual_formal): Ensure that an intrinsic vtable exists
	to match an unlimited polymorphic formal argument.
	* match.c (gfc_match_allocate): Type kind parameter does not
	need to match an unlimited polymorphic allocate-object.
	(alloc_opt_list): An unlimited polymorphic allocate-object
	requires a typespec or a SOURCE tag.
	(select_intrinsic_set_tmp): New function.
	(select_type_set_tmp): Call new function.  If it returns NULL,
	build a derived type or class temporary instead.
	(gfc_match_type_is): Remove restriction to derived types only.
	Bind(C) or sequence derived types not permitted.
	* misc (gfc_typename):  Printed CLASS(*) for unlimited
	polymorphism.
	* module.c : Add AB_UNLIMITED_POLY to pass unlimited
	polymorphic attribute to and from modules.
	* resolve.c (resolve_common_vars): Unlimited polymorphic
	entities cannot appear in common blocks.
	(resolve_deallocate_expr): Deallocate unlimited polymorphic
	enities.
	(resolve_allocate_expr): Likewise for allocation.  Make sure
	vtable exists.
	(gfc_type_is_extensible): Unlimited polymorphic entities are
	not extensible.
	(resolve_select_type): Handle unlimited polymorphic selectors.
	Ensure that length type parameters are assumed and that names
	for intrinsic types are generated.
	(resolve_fl_var_and_proc): Exclude select type temporaries
	from test of extensibility of type.
	(resolve_fl_variable): Likewise for test that assumed character
	length must be a dummy or a parameter.
	(resolve_fl_derived0): Return SUCCESS unconditionally for
	unlimited polymorphic entities. Also, allow unlimited
	polymorphic components.
	(resolve_fl_derived): Return SUCCESS unconditionally for
	unlimited polymorphic entities.
	(resolve_symbol): Return early with unlimited polymorphic
	entities.
	* simplifiy.c : Update copyright year.
	(gfc_simplify_extends_type_of): No simplification possible
	for unlimited polymorphic arguments.
	* symbol.c (gfc_use_derived): Nothing to do for unlimited
	polymorphic "derived type".
	(gfc_type_compatible): Return unity if ts1 is unlimited
	polymorphic.
	* trans-decl.c (create_function_arglist) Formal arguments
	without a character length should be treated in the same way
	as passed lengths.
	(gfc_trans_deferred_vars): Nullify the vptr of unlimited
	polymorphic pointers. Avoid unlimited polymorphic entities
	triggering gcc_unreachable.
	* trans-expr.c (gfc_conv_intrinsic_to_class): New function.
	(gfc_trans_class_init_assign): Make indirect reference of
	src.expr.
	(gfc_trans_class_assign): Expression NULL of unknown type
	should set NULL vptr on lhs. Treat C717 cases where lhs is
	a derived type and the rhs is unlimited polymorphic.
	(gfc_conv_procedure_call): Handle the conversion of a non-class
	actual argument to match an unlimited polymorphic formal
	argument.  Suppress the passing of a character string length
	in this case.  Make sure that calls to the character __copy
	function have two character string length arguments.
	(gfc_conv_initializer): Pass the initialization expression to
	gfc_class_null_initializer.
	(gfc_trans_subcomponent_assign): Ditto.
	(gfc_conv_structure): Move handling of _size component.
	trans-intrinsic.c: (gfc_conv_same_type_as): Handle conditions
	where unlimited polymorphic arguments have null vptr.
	* trans-stmt.c (trans_associate_var): Correctly treat array
	temporaries associated with unlimited polymorphic selectors.
	Recover the overwritten dtype for the descriptor. Use the _size
	field of the vptr for character string lengths.
	(gfc_trans_allocate): Cope with unlimited polymorphic allocate
	objects; especially with character source tags.
	(reset_vptr): New function.
	(gfc_trans_deallocate): Call it.
	* trans-types.c (gfc_get_derived_type): Detect unlimited
	polymorphic types and deal with cases where the derived type of
	components is null.
	* trans.c : Update copyright year.
	(trans_code): Call gfc_trans_class_assign for C717 cases where
	the lhs is not unlimited polymorphic.

2012-12-19  Paul Thomas  <pault@gcc.gnu.org>

	* intrinsics/extends_type_of.c : Return correct results for
	null vptrs.

2012-12-19  Paul Thomas  <pault@gcc.gnu.org>

	* gfortran.dg/unlimited_polymorphic_1.f03: New test.
	* gfortran.dg/unlimited_polymorphic_2.f03: New test.
	* gfortran.dg/unlimited_polymorphic_3.f03: New test.
	* gfortran.dg/same_type_as.f03: Correct for improved message.

From-SVN: r194622
2012-12-20 00:15:00 +00:00
Tobias Burnus
25ffd46fa2 re PR fortran/55638 (Wrongly accepts INTENT + VALUE - and wrongly requires it for PURE)
2012-12-16  Tobias Burnus  <burnus@net-b.de>

        PR fortran/55638
        * resolve.c (resolve_formal_arglist): Allow VALUE without
        INTENT for ELEMENTAL procedures.

2012-12-16  Tobias Burnus  <burnus@net-b.de>

        PR fortran/55638
        * gfortran.dg/elemental_args_check_3.f90: Update dg-error.
        * gfortran.dg/elemental_args_check_7.f90: New.

From-SVN: r194525
2012-12-16 00:25:36 +01:00
Tobias Burnus
d07e82f92b resolve.c (generate_component_assignments): Fix memleak.
2012-12-05  Tobias Burnus  <burnus@net-b.de>

        * resolve.c (generate_component_assignments): Fix memleak.

From-SVN: r194225
2012-12-05 16:45:32 +01:00
Tobias Burnus
86035eeca6 re PR fortran/37336 ([F03] Finish derived-type finalization)
2012-12-03  Tobias Burnus  <burnus@net-b.de>
            Janus Weil  <janus@gcc.gnu.org>

        PR fortran/37336
        * class.c (gfc_is_finalizable): New function.
        * gfortran.h (gfc_is_finalizable): Its prototype.
        * module.c (mio_component): Read initializer for vtype's _final.
        * resolve.c (resolve_fl_derived0): Call gfc_is_finalizable.
        * trans-expr.c (gfc_vtable_final_get): New function.
        (conv_parent_component_references): Fix comment.
        (gfc_conv_variable): Fix for scalar coarray components.
        * trans-intrinsic.c (conv_intrinsic_move_alloc): For BT_CLASS,
        pass the BT_CLASS type and not the declared type to
        gfc_deallocate_scalar_with_status.
        * trans.h (gfc_vtable_final_get): New prototype.


Co-Authored-By: Janus Weil <janus@gcc.gnu.org>

From-SVN: r194104
2012-12-03 22:13:42 +01:00
Paul Thomas
474d486a73 resolve.c (resolve_allocate_deallocate, [...]): Recover revisions 193568 and 193778...
2012-12-02  Paul Thomas  <pault@gcc.gnu.org>

	* resolve.c (resolve_allocate_deallocate,
	resolve_typebound_intrinsic_op): Recover revisions 193568 and
	193778, which were accidentally reverted by the previous patch.

From-SVN: r194052
2012-12-02 15:23:30 +00:00
Alessandro Fanfarillo
4d382327d5 re PR fortran/46897 ([OOP] type-bound defined ASSIGNMENT(=) not used for derived type component in intrinsic assign)
2012-12-01   Alessandro Fanfarillo <alessandro.fanfarillo@gmail.com>
             Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/46897
	* gfortran.h : Add bit field 'defined_assign_comp' to
	symbol_attribute structure.
	Add primitive for gfc_add_full_array_ref.
	* expr.c (gfc_add_full_array_ref): New function.
	(gfc_lval_expr_from_sym): Call new function.
	* resolve.c (add_comp_ref): New function.
	(build_assignment): New function.
	(get_temp_from_expr): New function
	(add_code_to_chain): New function
	(generate_component_assignments): New function that calls all
	the above new functions.
	(resolve_code): Call generate_component_assignments.
	(check_defined_assignments): New function.
	(resolve_fl_derived0): Call check_defined_assignments.
	(gfc_resolve): Reset component_assignment_level in case it is
	left in a bad state by errors.


	* resolve.c (is_sym_host_assoc, resolve_procedure_interface,
	resolve_contained_fntype, resolve_procedure_expression,
	resolve_elemental_actual, resolve_global_procedure,
	is_scalar_expr_ptr, gfc_iso_c_func_interface, resolve_function,
	set_name_and_label, gfc_iso_c_sub_interface,
	resolve_specific_s0, resolve_operator, compare_bound_mpz_t,
	gfc_resolve_character_operator, resolve_typebound_function,
	gfc_resolve_expr, forall_index, remove_last_array_ref,
	conformable_arrays, resolve_allocate_expr,
	resolve_allocate_deallocate, resolve_select_type,
	resolve_transfer, resolve_where,
	gfc_resolve_where_code_in_forall, gfc_resolve_forall_body,
	gfc_count_forall_iterators, resolve_values,
	resolve_bind_c_comms, resolve_bind_c_derived_types,
	gfc_verify_binding_labels, apply_default_init,
	build_default_init_expr, apply_default_init_local,
	resolve_fl_var_and_proc, resolve_fl_procedure,
	gfc_resolve_finalizers, check_generic_tbp_ambiguity,
	resolve_typebound_intrinsic_op, resolve_typebound_procedure,
	resolve_typebound_procedures, ensure_not_abstract,
	resolve_fl_derived0, resolve_fl_parameter, resolve_symbol,
	resolve_equivalence_derived): Remove trailing white space.
	* gfortran.h : Remove trailing white space.

2012-12-01   Alessandro Fanfarillo <alessandro.fanfarillo@gmail.com>
             Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/46897
	* gfortran.dg/defined_assignment_1.f90: New test.
	* gfortran.dg/defined_assignment_2.f90: New test.
	* gfortran.dg/defined_assignment_3.f90: New test.
	* gfortran.dg/defined_assignment_4.f90: New test.
	* gfortran.dg/defined_assignment_5.f90: New test.


Co-Authored-By: Paul Thomas <pault@gcc.gnu.org>

From-SVN: r194016
2012-12-01 08:00:22 +00:00
Thomas Koenig
02bfa7081e re PR fortran/55314 (Rejects some valid ALLOCATE statements)
2012-11-24  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/55314
	* resolve.c (resolve_allocate_deallocate):  Compare all
	subscripts when deciding if to reject a (de)allocate
	statement.

2012-11-24  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/55314
	* gfortran.dg/allocate_error_4.f90:  New test.

From-SVN: r193778
2012-11-24 15:00:16 +00:00