[Bug fortran/45586] [4.6/4.7 Regression] ICE non-trivial conversion at assignment
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45586 Richard Guenther rguenth at gcc dot gnu.org changed: What|Removed |Added CC||dominiq at lps dot ens.fr --- Comment #65 from Richard Guenther rguenth at gcc dot gnu.org 2012-03-07 09:47:16 UTC --- *** Bug 52516 has been marked as a duplicate of this bug. ***
[Bug fortran/45586] [4.6/4.7 Regression] ICE non-trivial conversion at assignment
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45586 --- Comment #63 from Richard Guenther rguenth at gcc dot gnu.org 2012-02-14 13:01:09 UTC --- With a (seemingly) unrelated patch (attached to PR52097) I'm back on ICEing for the gfortran.dg/lto/pr45586*.f90 testcases ... Even before the adjusted type merging we have (at compile-time) Breakpoint 5, output_gimple_stmt (ob=0x1c6c440, stmt=0x75b51730) at /space/rguenther/src/svn/trunk/gcc/gimple-streamer-out.c:138 138 stream_write_tree (ob, op, true); y = D.1925_27-r; (gdb) call debug_tree (gimple_assign_lhs (stmt)-typed.type) record_type 0x75b4d2a0 array3_real(kind=8) type_1 BLK size integer_cst 0x75b3e700 type integer_type 0x75a2e0a8 bitsizetype constant 768 unit size integer_cst 0x75b1fc60 type integer_type 0x75a2e000 sizetype constant 96 align 64 symtab 0 alias set -1 canonical type 0x75b4a0a8 fields field_decl 0x75b3d7b8 data type pointer_type 0x75a2ec78 type void_type 0x75a2ebd0 void public unsigned DI size integer_cst 0x75a1dec0 constant 64 unit size integer_cst 0x75a1dee0 constant 8 align 64 symtab 0 alias set -1 canonical type 0x75a2ec78 pointer_to_this pointer_type 0x75a41f18 (gdb) call debug_tree (gimple_assign_rhs1 (stmt)-typed.type) record_type 0x75b4a738 array3_real(kind=8) type_1 BLK size integer_cst 0x75b3e700 type integer_type 0x75a2e0a8 bitsizetype constant 768 unit size integer_cst 0x75b1fc60 type integer_type 0x75a2e000 sizetype constant 96 align 64 symtab 0 alias set -1 canonical type 0x75b4a0a8 fields field_decl 0x75b3dab0 data type pointer_type 0x75a2ec78 type void_type 0x75a2ebd0 void public unsigned DI size integer_cst 0x75a1dec0 constant 64 unit size integer_cst 0x75a1dee0 constant 8 align 64 symtab 0 alias set -1 canonical type 0x75a2ec78 pointer_to_this pointer_type 0x75a41f18 _BUT_(!) its main-variant is (gdb) call debug_tree (gimple_assign_rhs1 (stmt)-typed.type-type_common.main_variant) record_type 0x75b4a000 array3_real(kind=8) type_1 BLK size integer_cst 0x75b3e700 type integer_type 0x75a2e0a8 bitsizetype constant 768 unit size integer_cst 0x75b1fc60 type integer_type 0x75a2e000 sizetype constant 96 align 64 symtab 0 alias set -1 canonical type 0x75b4a0a8 fields field_decl 0x75b3d390 data type pointer_type 0x75a41e70 type void_type 0x75a2ebd0 void unsigned restrict DI size integer_cst 0x75a1dec0 constant 64 unit size integer_cst 0x75a1dee0 constant 8 align 64 symtab 0 alias set -1 canonical type 0x75a41e70 thus has a restrict-qualified data field. That's bogus as TYPE_FIELDS is supposed to be shared amongst variant types.
[Bug fortran/45586] [4.6/4.7 Regression] ICE non-trivial conversion at assignment
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45586 --- Comment #64 from Richard Guenther rguenth at gcc dot gnu.org 2012-02-14 13:20:37 UTC --- Index: gcc/fortran/trans-types.c === --- gcc/fortran/trans-types.c (revision 184203) +++ gcc/fortran/trans-types.c (working copy) @@ -2042,7 +2042,8 @@ gfc_nonrestricted_type (tree t) } if (!field) break; - ret = build_variant_type_copy (t); + ret = build_distinct_type_copy (t); + TYPE_CANONICAL (ret) = TYPE_CANONICAL (t); TYPE_FIELDS (ret) = NULL_TREE; /* Here we make sure that as soon as we know we have to copy works here, but I suspect it would not fix the Fortran -flto ICEs in PR51765 (which happen on pristine trunk, much to the same issue I suppose).
[Bug fortran/45586] [4.6/4.7 Regression] ICE non-trivial conversion at assignment
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45586 --- Comment #60 from Tobias Burnus burnus at gcc dot gnu.org 2011-07-27 22:33:03 UTC --- Author: burnus Date: Wed Jul 27 22:33:00 2011 New Revision: 176852 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=176852 Log: 2011-07-27 Tobias Burnus bur...@net-b.de PR fortran/45586 * trans-types.c (gfc_get_derived_type): Ensure that pointer component types are marked as nonrestricted. 2011-07-27 Tobias Burnus bur...@net-b.de PR fortran/45586 * gfortran.dg/lto/pr45586-2_0.f90: New. Added: trunk/gcc/testsuite/gfortran.dg/lto/pr45586-2_0.f90 Modified: trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/trans-types.c trunk/gcc/testsuite/ChangeLog
[Bug fortran/45586] [4.6/4.7 Regression] ICE non-trivial conversion at assignment
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45586 --- Comment #61 from Tobias Burnus burnus at gcc dot gnu.org 2011-07-28 05:40:28 UTC --- Author: burnus Date: Thu Jul 28 05:40:21 2011 New Revision: 176858 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=176858 Log: 2011-07-28 Tobias Burnus bur...@net-b.de PR fortran/45586 * trans-types.c (gfc_get_derived_type): Ensure that pointer component types are marked as nonrestricted. 2011-07-28 Tobias Burnus bur...@net-b.de PR fortran/45586 * gfortran.dg/lto/pr45586-2_0.f90: New. Added: branches/gcc-4_6-branch/gcc/testsuite/gfortran.dg/lto/pr45586-2_0.f90 Modified: branches/gcc-4_6-branch/gcc/fortran/ChangeLog branches/gcc-4_6-branch/gcc/fortran/trans-types.c branches/gcc-4_6-branch/gcc/testsuite/ChangeLog
[Bug fortran/45586] [4.6/4.7 Regression] ICE non-trivial conversion at assignment
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45586 Tobias Burnus burnus at gcc dot gnu.org changed: What|Removed |Added Status|REOPENED|RESOLVED Resolution||FIXED --- Comment #62 from Tobias Burnus burnus at gcc dot gnu.org 2011-07-28 05:42:01 UTC --- FIXED the issue of comment 53 on the 4.7 trunk and on the 4.6 branch. Thanks for the report!
[Bug fortran/45586] [4.6/4.7 Regression] ICE non-trivial conversion at assignment
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45586 --- Comment #59 from Tobias Burnus burnus at gcc dot gnu.org 2011-07-26 14:27:43 UTC --- (In reply to comment #53) reduced testcase for 4.7 y=rs_gauge(i)%rs(j)%rs_grid%r Here, %r-data is marked as restricted as r is allocatable. However, all other references are a pointer. The derived type is obtained via a nested calls to gfc_get_derived_type. For r one calls gfc_get_array_type_bounds - seemingly with restricted = 1. If one now declares rs_gauge, one calls gfc_nonrestricted_type which removes the restrict qualifier from the type (i.e. rs_gauge) and from the rs_gauge-rs but does not go higher up the chain. Thus, one somehow needs to walk the components and remove the restrict there ... With the following patch, one does not get any ICE anymore, but I am neither sure whether it is sufficient, nor whether it removes restrict qualifiers where it shouldn't, nor whether it is correct at all. --- a/gcc/fortran/trans-types.c +++ b/gcc/fortran/trans-types.c @@ -2421,6 +2421,9 @@ gfc_get_derived_type (gfc_symbol * derived) !c-attr.proc_pointer) field_type = build_pointer_type (field_type); + if (c-attr.pointer) + field_type = gfc_nonrestricted_type (field_type); + /* vtype fields can point to different types to the base type. */ if (c-ts.type == BT_DERIVED c-ts.u.derived-attr.vtype) field_type = build_pointer_type_for_mode (TREE_TYPE (field_type),
[Bug fortran/45586] [4.6/4.7 Regression] ICE non-trivial conversion at assignment
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45586 Jakub Jelinek jakub at gcc dot gnu.org changed: What|Removed |Added Target Milestone|4.6.1 |4.6.2 --- Comment #58 from Jakub Jelinek jakub at gcc dot gnu.org 2011-06-27 12:32:56 UTC --- GCC 4.6.1 is being released.
[Bug fortran/45586] [4.6/4.7 Regression] ICE non-trivial conversion at assignment
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45586 --- Comment #54 from Tobias Burnus burnus at gcc dot gnu.org 2011-04-26 14:07:03 UTC --- (In reply to comment #53) reduced testcase for 4.7 Does not fail here - can you still reproduce it? (It might have been fixed by the patch for PR 48588. If it still occurs, I will try harder.)
[Bug fortran/45586] [4.6/4.7 Regression] ICE non-trivial conversion at assignment
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45586 --- Comment #55 from Joost VandeVondele Joost.VandeVondele at pci dot uzh.ch 2011-04-26 18:17:52 UTC --- (In reply to comment #54) (In reply to comment #53) reduced testcase for 4.7 Does not fail here - can you still reproduce it? (It might have been fixed by the patch for PR 48588. If it still occurs, I will try harder.) still fails for me with latest trunk (but notice the testcase only fails to compile at -O0 -flto). For completeness, the full -v output for me, might be gold or so related: gfortran -v -O0 -flto t.f90 Driving: gfortran -v -O0 -flto t.f90 -l gfortran -l m -shared-libgcc Using built-in specs. COLLECT_GCC=gfortran COLLECT_LTO_WRAPPER=/data03/vondele/gnu/gcc_trunk/install/libexec/gcc/x86_64-unknown-linux-gnu/4.7.0/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: ../gcc/configure --prefix=/data03/vondele/gnu/gcc_trunk/install --enable-languages=c,c++,fortran --disable-multilib --enable-plugins --enable-cloog-backend=isl --with-ppl=/data03/vondele/gnu/ppl-0.11/install --with-cloog=/data03/vondele/gnu/cloog-0.16.1/install/ --with-libelf=/data03/vondele/gnu/libelf-0.8.13/install --with-plugin-ld=ld.gold Thread model: posix gcc version 4.7.0 20110426 (experimental) [trunk revision 172980] (GCC) COLLECT_GCC_OPTIONS='-v' '-O0' '-flto' '-shared-libgcc' '-mtune=generic' '-march=x86-64' /data03/vondele/gnu/gcc_trunk/install/libexec/gcc/x86_64-unknown-linux-gnu/4.7.0/f951 t.f90 -quiet -dumpbase t.f90 -mtune=generic -march=x86-64 -auxbase t -O0 -version -flto -fintrinsic-modules-path /data03/vondele/gnu/gcc_trunk/install/lib/gcc/x86_64-unknown-linux-gnu/4.7.0/finclude -o /dev/shm/vondele/cc5Lcxwt.s GNU Fortran (GCC) version 4.7.0 20110426 (experimental) [trunk revision 172980] (x86_64-unknown-linux-gnu) compiled by GNU C version 4.7.0 20110426 (experimental) [trunk revision 172980], GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8.2 GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 GNU Fortran (GCC) version 4.7.0 20110426 (experimental) [trunk revision 172980] (x86_64-unknown-linux-gnu) compiled by GNU C version 4.7.0 20110426 (experimental) [trunk revision 172980], GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8.2 GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 COLLECT_GCC_OPTIONS='-v' '-O0' '-flto' '-shared-libgcc' '-mtune=generic' '-march=x86-64' as --64 -o /dev/shm/vondele/ccHOHV4Q.o /dev/shm/vondele/cc5Lcxwt.s Reading specs from /data03/vondele/gnu/gcc_trunk/install/lib/gcc/x86_64-unknown-linux-gnu/4.7.0/../../../../lib64/libgfortran.spec rename spec lib to liborig COLLECT_GCC_OPTIONS='-v' '-O0' '-flto' '-shared-libgcc' '-mtune=generic' '-march=x86-64' COMPILER_PATH=/data03/vondele/gnu/gcc_trunk/install/libexec/gcc/x86_64-unknown-linux-gnu/4.7.0/:/data03/vondele/gnu/gcc_trunk/install/libexec/gcc/x86_64-unknown-linux-gnu/4.7.0/:/data03/vondele/gnu/gcc_trunk/install/libexec/gcc/x86_64-unknown-linux-gnu/:/data03/vondele/gnu/gcc_trunk/install/lib/gcc/x86_64-unknown-linux-gnu/4.7.0/:/data03/vondele/gnu/gcc_trunk/install/lib/gcc/x86_64-unknown-linux-gnu/ LIBRARY_PATH=/data03/vondele/gnu/gcc_trunk/install/lib/gcc/x86_64-unknown-linux-gnu/4.7.0/:/data03/vondele/gnu/gcc_trunk/install/lib/gcc/x86_64-unknown-linux-gnu/4.7.0/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/data03/vondele/gnu/gcc_trunk/install/lib/gcc/x86_64-unknown-linux-gnu/4.7.0/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS='-v' '-O0' '-flto' '-shared-libgcc' '-mtune=generic' '-march=x86-64' /data03/vondele/gnu/gcc_trunk/install/libexec/gcc/x86_64-unknown-linux-gnu/4.7.0/collect2 -flto --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 /usr/lib/../lib64/crt1.o /usr/lib/../lib64/crti.o /data03/vondele/gnu/gcc_trunk/install/lib/gcc/x86_64-unknown-linux-gnu/4.7.0/crtbegin.o -L/data03/vondele/gnu/gcc_trunk/install/lib/gcc/x86_64-unknown-linux-gnu/4.7.0 -L/data03/vondele/gnu/gcc_trunk/install/lib/gcc/x86_64-unknown-linux-gnu/4.7.0/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/data03/vondele/gnu/gcc_trunk/install/lib/gcc/x86_64-unknown-linux-gnu/4.7.0/../../.. /dev/shm/vondele/ccHOHV4Q.o -lgfortran -lm -lgcc_s -lgcc -lquadmath -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /data03/vondele/gnu/gcc_trunk/install/lib/gcc/x86_64-unknown-linux-gnu/4.7.0/crtend.o /usr/lib/../lib64/crtn.o gfortran @/dev/shm/vondele/ccrOSrYZ.args Using built-in specs. COLLECT_GCC=gfortran COLLECT_LTO_WRAPPER=/data03/vondele/gnu/gcc_trunk/install/libexec/gcc/x86_64-unknown-linux-gnu/4.7.0/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: ../gcc/configure --prefix=/data03/vondele/gnu/gcc_trunk/install --enable-languages=c,c++,fortran --disable-multilib --enable-plugins --enable-cloog-backend=isl --with-ppl=/data03/vondele/gnu/ppl-0.11/install --with-cloog=/data03/vondele/gnu/cloog-0.16.1/install/ --with-libelf=/data03/vondele/gnu/libelf-0.8.13/install --with-plugin-ld=ld.gold Thread
[Bug fortran/45586] [4.6/4.7 Regression] ICE non-trivial conversion at assignment
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45586 --- Comment #56 from Joost VandeVondele Joost.VandeVondele at pci dot uzh.ch 2011-04-26 18:19:29 UTC --- (In reply to comment #54) (In reply to comment #53) reduced testcase for 4.7 Does not fail here - can you still reproduce it? (It might have been fixed by the patch for PR 48588. If it still occurs, I will try harder.) an as a PS, --enable-checking=release also hides the bug.
[Bug fortran/45586] [4.6/4.7 Regression] ICE non-trivial conversion at assignment
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45586 --- Comment #57 from Thomas Koenig tkoenig at gcc dot gnu.org 2011-04-26 19:37:32 UTC --- (In reply to comment #54) (In reply to comment #53) reduced testcase for 4.7 Does not fail here - can you still reproduce it? (It might have been fixed by the patch for PR 48588. If it still occurs, I will try harder.) Fails for me here too, at -O0. Looking at the site of the error message, we get (note the public unsigned DI vs. unsigned restrict DI: 3722 error (non-trivial conversion at assignment); (gdb) p debug_tree(lhs_type) record_type 0x770dae70 array3_real(kind=8) BLK size integer_cst 0x770d1420 type integer_type 0x77ee50a8 bit_size_type constant 768 unit size integer_cst 0x770d1460 type integer_type 0x77ee5000 constant 96 align 64 symtab 0 alias set -1 canonical type 0x770daf18 fields field_decl 0x770df4c0 data type pointer_type 0x77ee5dc8 type void_type 0x77ee5d20 void public unsigned DI size integer_cst 0x77eea1e0 constant 64 unit size integer_cst 0x77eea200 constant 8 align 64 symtab 0 alias set -1 canonical type 0x77ee5dc8 pointer_to_this pointer_type 0x77ef7e70 unsigned DI file test.f90 line 17 col 0 size integer_cst 0x77eea1e0 64 unit size integer_cst 0x77eea200 8 align 64 offset_align 128 offset integer_cst 0x77ed5f00 constant 0 bit offset integer_cst 0x77eea420 constant 0 context record_type 0x770daf18 array_descriptor3 chain field_decl 0x770df558 offset type integer_type 0x77ee55e8 long int DI file test.f90 line 17 col 0 size integer_cst 0x77eea1e0 64 unit size integer_cst 0x77eea200 8 align 64 offset_align 128 offset integer_cst 0x77ed5f00 0 bit offset integer_cst 0x77eea1e0 64 context record_type 0x770daf18 array_descriptor3 chain field_decl 0x770df5f0 dtype $1 = void (gdb) p debug_tree(rhs1_type) record_type 0x770da7e0 array3_real(kind=8) BLK size integer_cst 0x770d1420 type integer_type 0x77ee50a8 bit_size_type constant 768 unit size integer_cst 0x770d1460 type integer_type 0x77ee5000 constant 96 align 64 symtab 0 alias set -1 canonical type 0x770da930 fields field_decl 0x77ededa8 data type pointer_type 0x770da888 type void_type 0x77ee5d20 void unsigned restrict DI size integer_cst 0x77eea1e0 constant 64 unit size integer_cst 0x77eea200 constant 8 align 64 symtab 0 alias set -1 canonical type 0x770da888 unsigned DI file test.f90 line 17 col 0 size integer_cst 0x77eea1e0 64 unit size integer_cst 0x77eea200 8 align 64 offset_align 128 offset integer_cst 0x77ed5f00 constant 0 bit offset integer_cst 0x77eea420 constant 0 context record_type 0x770da930 array_descriptor3 chain field_decl 0x77edee40 offset type integer_type 0x77ee55e8 long int DI file test.f90 line 17 col 0 size integer_cst 0x77eea1e0 64 unit size integer_cst 0x77eea200 8 align 64 offset_align 128 offset integer_cst 0x77ed5f00 0 bit offset integer_cst 0x77eea1e0 64 context record_type 0x770da930 array_descriptor3 chain field_decl 0x77edeed8 dtype $2 = void (gdb) record_type 0x770da7e0 array3_real(kind=8) BLK size integer_cst 0x770d1420 type integer_type 0x77ee50a8 bit_size_type constant 768 unit size integer_cst 0x770d1460 type integer_type 0x77ee5000 constant 96 align 64 symtab 0 alias set -1 canonical type 0x770da930
[Bug fortran/45586] [4.6/4.7 Regression] ICE non-trivial conversion at assignment
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45586 --- Comment #53 from Joost VandeVondele Joost.VandeVondele at pci dot uzh.ch 2011-04-13 18:47:24 UTC --- reduced testcase for 4.7 MODULE M1 INTEGER, PARAMETER :: dp=8 TYPE realspace_grid_type REAL(KIND=dp), DIMENSION ( :, :, : ), ALLOCATABLE :: r END TYPE realspace_grid_type TYPE realspace_grid_p_type TYPE(realspace_grid_type), POINTER :: rs_grid END TYPE realspace_grid_p_type TYPE realspaces_grid_p_type TYPE(realspace_grid_p_type), DIMENSION(:), POINTER :: rs END TYPE realspaces_grid_p_type END MODULE MODULE M2 USE M1 CONTAINS SUBROUTINE S1() INTEGER :: i,j TYPE(realspaces_grid_p_type), DIMENSION(:), POINTER :: rs_gauge REAL(dp), DIMENSION(:, :, :), POINTER:: y y=rs_gauge(i)%rs(j)%rs_grid%r END SUBROUTINE END MODULE USE M2 CALL S1() END gfortran -O0 -flto test.f90 In file included from :0:0: test.f90: In function ‘s1’: test.f90:17:0: error: non-trivial conversion at assignment struct array3_real(kind=8) struct array3_real(kind=8) y = D.2087_27-r; test.f90:17:0: internal compiler error: verify_gimple failed
[Bug fortran/45586] [4.6/4.7 Regression] ICE non-trivial conversion at assignment
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45586 --- Comment #51 from Tobias Burnus burnus at gcc dot gnu.org 2011-04-11 09:09:37 UTC --- (In reply to comment #50) The original problem in comment #0 fails (i.e. the build of CP2K) with trunk 4.7, at what I believe is essentially the same issue. Unfortunately the smaller testcase (comment #1) doesn't fail anymore. /data03/vondele/cp2k_gcc/cp2k/makefiles/../src/qs_linres_current.F: In function ‘calculate_jrho_resp’: /data03/vondele/cp2k_gcc/cp2k/makefiles/../src/qs_linres_current.F:612:0: error: non-trivial conversion at assignment Could you try to reduce the test case?
[Bug fortran/45586] [4.6/4.7 Regression] ICE non-trivial conversion at assignment
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45586 --- Comment #52 from Joost VandeVondele Joost.VandeVondele at pci dot uzh.ch 2011-04-12 05:50:45 UTC --- (In reply to comment #51) (In reply to comment #50) The original problem in comment #0 fails (i.e. the build of CP2K) with trunk Could you try to reduce the test case? I will give it a try later this week, but this kind of LTO ICEs are difficult to reduce (starting from ~1MLOC), since it can basically not be done automatically (and the obvious testcase doesn't seem to fail anymore).
[Bug fortran/45586] [4.6/4.7 Regression] ICE non-trivial conversion at assignment
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45586 Richard Guenther rguenth at gcc dot gnu.org changed: What|Removed |Added Target Milestone|4.6.0 |4.6.1 Summary|[4.6 Regression] ICE|[4.6/4.7 Regression] ICE |non-trivial conversion at |non-trivial conversion at |assignment |assignment