Maybe related to PR 51578 and PR 55574. program gar_nichts use ISO_C_BINDING use ISO_C_BINDING, only: C_PTR use ISO_C_BINDING, only: abc => C_PTR use ISO_C_BINDING, only: xyz => C_PTR type(xyz) nada nada = transfer(C_NULL_PTR,nada) end program gar_nichts ig25@linux-fd1f:/tmp> gfortran nada6.f90 f951: interner Compiler-Fehler: Speicherzugriffsfehler 0x96349f crash_signal ../../trunk/gcc/toplev.c:332 0x5ab741 tree_check ../../trunk/gcc/tree.h:3668 0x5ab741 encode_derived ../../trunk/gcc/fortran/target-memory.c:242 0x5ab741 gfc_target_encode_expr(gfc_expr*, unsigned char*, unsigned long) ../../trunk/gcc/fortran/target-memory.c:319 0x5a2158 gfc_simplify_transfer(gfc_expr*, gfc_expr*, gfc_expr*) ../../trunk/gcc/fortran/simplify.c:6056 0x542f31 do_simplify ../../trunk/gcc/fortran/intrinsic.c:3817 0x550146 gfc_intrinsic_func_interface(gfc_expr*, int) ../../trunk/gcc/fortran/intrinsic.c:4160 0x58c0f6 resolve_unknown_f ../../trunk/gcc/fortran/resolve.c:2613 0x58c0f6 resolve_function ../../trunk/gcc/fortran/resolve.c:3214 0x58c0f6 gfc_resolve_expr(gfc_expr*) ../../trunk/gcc/fortran/resolve.c:6549 0x591699 resolve_code ../../trunk/gcc/fortran/resolve.c:10120 0x59421e resolve_codes ../../trunk/gcc/fortran/resolve.c:14963 0x585282 gfc_resolve ../../trunk/gcc/fortran/resolve.c:14991 0x579bc2 resolve_all_program_units ../../trunk/gcc/fortran/parse.c:4395 0x579bc2 gfc_parse_file() ../../trunk/gcc/fortran/parse.c:4662 0x5b5995 gfc_be_parse_file ../../trunk/gcc/fortran/f95-lang.c:189 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <http://gcc.gnu.org/bugs.html> for instructions. ig25@linux-fd1f:/tmp> gdb ~/lib/gcc/x86_64-unknown-linux-gnu/4.8.0/f951 GNU gdb (GDB) 7.5 Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-unknown-linux-gnu". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... Reading symbols from /home/ig25/lib/gcc/x86_64-unknown-linux-gnu/4.8.0/f951...done. (gdb) r nada6.f90 Starting program: /home/ig25/lib/gcc/x86_64-unknown-linux-gnu/4.8.0/f951 nada6.f90 warning: Could not load shared library symbols for linux-vdso.so.1. Do you need "set solib-search-path" or "set sysroot"? Program received signal SIGSEGV, Segmentation fault. encode_derived (buffer_size=8, buffer=0x7fffffffd6c0 "", source=<optimized out>) at ../../trunk/gcc/fortran/target-memory.c:242 242 ptr = TREE_INT_CST_LOW(DECL_FIELD_OFFSET(cmp->backend_decl)) (gdb) p cmp->backend_decl $1 = (tree) 0x0 (gdb) p *cmp $2 = {name = 0x7ffff6d5b310 "__xyz_c_address", ts = {type = BT_INTEGER, kind = 8, u = {derived = 0x0, cl = 0x0, pad = 0}, interface = 0x0, is_c_interop = 1, is_iso_c = 0, f90_type = BT_INTEGER, deferred = false}, attr = {allocatable = 0, dimension = 0, codimension = 0, external = 0, intrinsic = 0, optional = 0, pointer = 0, target = 0, value = 0, volatile_ = 0, temporary = 0, dummy = 0, result = 0, assign = 0, threadprivate = 0, not_always_present = 0, implied_index = 0, subref_array_pointer = 0, proc_pointer = 0, asynchronous = 0, contiguous = 0, class_pointer = 0, save = SAVE_NONE, data = 0, is_protected = 0, use_assoc = 0, use_only = 0, use_rename = 0, imported = 0, host_assoc = 0, in_namelist = 0, in_common = 0, in_equivalence = 0, function = 0, subroutine = 0, procedure = 0, generic = 0, generic_copy = 0, implicit_type = 0, untyped = 0, is_bind_c = 0, extension = 0, is_class = 0, class_ok = 0, vtab = 0, vtype = 0, is_c_interop = 0, is_iso_c = 0, sequence = 0, elemental = 0, pure = 0, recursive = 0, unmaskable = 0, masked = 0, contained = 0, mod_proc = 0, abstract = 0, public_used = 0, implicit_pure = 0, noreturn = 0, entry = 0, entry_master = 0, mixed_entry_master = 0, always_explicit = 0, artificial = 0, referenced = 0, is_main_program = 0, access = ACCESS_UNKNOWN, intent = INTENT_UNKNOWN, flavor = FL_UNKNOWN, if_source = IFSRC_UNKNOWN, proc = PROC_UNKNOWN, cray_pointer = 0, cray_pointee = 0, alloc_comp = 0, pointer_comp = 0, proc_pointer_comp = 0, private_comp = 0, zero_comp = 0, coarray_comp = 0, lock_comp = 0, defined_assign_comp = 0, unlimited_polymorphic = 0, select_type_temporary = 0, ext_attr = 0, volatile_ns = 0x0, asynchronous_ns = 0x0}, as = 0x0, backend_decl = 0x0, norestrict_decl = 0x0, loc = { nextc = 0x15aa9ac, lb = 0x15aa970}, initializer = 0x0, next = 0x0, formal = 0x0, formal_ns = 0x0, tb = 0x0} Works with 4.6, haven't checked 4.7 yet.
Shortened a bit: program gar_nichts use ISO_C_BINDING, only: C_NULL_PTR use ISO_C_BINDING, only: xyz => C_PTR type(xyz) nada nada = transfer(C_NULL_PTR,nada) end program gar_nichts
The #c1 testcase started to be rejected with: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=177486 and then changed from an (invalid?) error into an ICE with: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=177527
This also fails in the same place (without renaming): program gar_nichts use ISO_C_BINDING, only :: C_PTR, C_NULL_PTR type(c_ptr) nada call foo(transfer(C_NULL_PTR,nada)) end program gar_nichts
(In reply to comment #3) Sorry, an error in the test case. This has the same error: program gar_nichts use ISO_C_BINDING type(c_ptr) nada call foo(transfer(C_NULL_PTR,nada)) ! call foo(transfer(0_8, nada)) end program gar_nichts The test case works if the constant 0_8 is used instead.
*** Bug 55356 has been marked as a duplicate of this bug. ***
Author: burnus Date: Mon Mar 25 15:40:26 2013 New Revision: 197053 URL: http://gcc.gnu.org/viewcvs?rev=197053&root=gcc&view=rev Log: 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. Added: trunk/gcc/testsuite/gfortran.dg/blockdata_7.f90 trunk/gcc/testsuite/gfortran.dg/c_assoc_4.f90 trunk/gcc/testsuite/gfortran.dg/c_f_pointer_tests_6.f90 trunk/gcc/testsuite/gfortran.dg/c_f_pointer_tests_7.f90 trunk/gcc/testsuite/gfortran.dg/c_funloc_tests_8.f90 trunk/gcc/testsuite/gfortran.dg/c_loc_test_17.f90 trunk/gcc/testsuite/gfortran.dg/c_loc_test_18.f90 trunk/gcc/testsuite/gfortran.dg/c_loc_test_19.f90 trunk/gcc/testsuite/gfortran.dg/c_loc_test_20.f90 trunk/gcc/testsuite/gfortran.dg/c_loc_tests_17.f90 trunk/gcc/testsuite/gfortran.dg/c_sizeof_5.f90 trunk/gcc/testsuite/gfortran.dg/iso_c_binding_rename_3.f90 trunk/gcc/testsuite/gfortran.dg/transfer_resolve_2.f90 trunk/gcc/testsuite/gfortran.dg/transfer_resolve_3.f90 trunk/gcc/testsuite/gfortran.dg/transfer_resolve_4.f90 Modified: trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/check.c trunk/gcc/fortran/expr.c trunk/gcc/fortran/gfortran.h trunk/gcc/fortran/intrinsic.c trunk/gcc/fortran/intrinsic.h trunk/gcc/fortran/iresolve.c trunk/gcc/fortran/iso-c-binding.def trunk/gcc/fortran/iso-fortran-env.def trunk/gcc/fortran/module.c trunk/gcc/fortran/resolve.c trunk/gcc/fortran/symbol.c trunk/gcc/fortran/target-memory.c trunk/gcc/fortran/trans-expr.c trunk/gcc/fortran/trans-intrinsic.c trunk/gcc/fortran/trans-io.c trunk/gcc/fortran/trans-types.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gfortran.dg/c_assoc_2.f03 trunk/gcc/testsuite/gfortran.dg/c_f_pointer_shape_test.f90 trunk/gcc/testsuite/gfortran.dg/c_f_pointer_shape_tests_3.f03 trunk/gcc/testsuite/gfortran.dg/c_f_pointer_tests_5.f90 trunk/gcc/testsuite/gfortran.dg/c_funloc_tests_2.f03 trunk/gcc/testsuite/gfortran.dg/c_funloc_tests_5.f03 trunk/gcc/testsuite/gfortran.dg/c_funloc_tests_6.f90 trunk/gcc/testsuite/gfortran.dg/c_loc_tests_10.f03 trunk/gcc/testsuite/gfortran.dg/c_loc_tests_11.f03 trunk/gcc/testsuite/gfortran.dg/c_loc_tests_15.f90 trunk/gcc/testsuite/gfortran.dg/c_loc_tests_16.f90 trunk/gcc/testsuite/gfortran.dg/c_loc_tests_3.f03 trunk/gcc/testsuite/gfortran.dg/c_loc_tests_4.f03 trunk/gcc/testsuite/gfortran.dg/c_loc_tests_8.f03 trunk/gcc/testsuite/gfortran.dg/c_ptr_tests_13.f03 trunk/gcc/testsuite/gfortran.dg/c_ptr_tests_14.f90 trunk/gcc/testsuite/gfortran.dg/c_ptr_tests_15.f90 trunk/gcc/testsuite/gfortran.dg/c_ptr_tests_9.f03 trunk/gcc/testsuite/gfortran.dg/c_sizeof_1.f90 trunk/gcc/testsuite/gfortran.dg/iso_c_binding_init_expr.f03 trunk/gcc/testsuite/gfortran.dg/pr32601.f03 trunk/gcc/testsuite/gfortran.dg/pr32601_1.f03 trunk/gcc/testsuite/gfortran.dg/storage_size_2.f08
GCC 4.7.3 is being released, adjusting target milestone.
It works with trunk (upcoming 4.9.0).
The 4.7 branch is being closed, moving target milestone to 4.8.4.
As the current patch is rather intrusive and as the issue is fixed in the released compiler 4.9.0, it is unlikely that the fix is backported to GCC 4.8. Hence: - WON'T FIX for GCC 4.8. - FIXED for GCC 4.9/4.10. Thanks for the report, the patience and sorry that it won't get fixed in GCC 4.7/4.8 any more.