https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88964
Bug ID: 88964 Summary: [8/9 Regression] ICE in wide_int_to_tree_1, at tree.c:1561 Product: gcc Version: 8.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- gfortran-9.0.0-alpha20190120 snapshot (r268107) ICEs when compiling the following snippet reduced from gcc/testsuite/gfortran.dg/pr68251.f90 w/ -O3 -fno-tree-forwprop --param sccvn-max-alias-queries-per-access=1: MODULE hfx_contract_block INTEGER, PARAMETER :: dp=8 CONTAINS SUBROUTINE contract_block(ma_max,mb_max,mc_max,md_max,kbd,kbc,kad,kac,pbd,pbc,pad,pac,prim,scale) REAL(KIND=dp) :: kbd(mb_max*md_max), kbc(mb_max*mc_max), & kad(ma_max*md_max), kac(ma_max*mc_max), pbd(mb_max*md_max), & pbc(mb_max*mc_max), pad(ma_max*md_max), pac(ma_max*mc_max), & prim(ma_max*mb_max*mc_max*md_max), scale CALL block_1_3_1_3(kbd,kbc,kad,kac,pbd,pbc,pad,pac,prim,scale) CALL block_1_3_1_4(kbd,kbc,kad,kac,pbd,pbc,pad,pac,prim,scale) CALL block_1_3_1_5(kbd,kbc,kad,kac,pbd,pbc,pad,pac,prim,scale) END SUBROUTINE contract_block SUBROUTINE block_1_3_1_3(kbd,kbc,kad,kac,pbd,pbc,pad,pac,prim,scale) REAL(KIND=dp) :: kbd(3*3), kbc(3*1), kad(1*3), kac(1*1), pbd(3*3), & pbc(3*1), pad(1*3), pac(1*1), prim(1*3*1*3), scale DO md = 1,3 DO mc = 1,1 DO mb = 1,3 DO ma = 1,1 kac((mc-1)*1+ma) = kac((mc-1)*1+ma)-tmp*p_bd END DO END DO END DO END DO END SUBROUTINE block_1_3_1_3 SUBROUTINE block_1_3_1_4(kbd,kbc,kad,kac,pbd,pbc,pad,pac,prim,scale) REAL(KIND=dp) :: kbd(3*4), kbc(3*1), kad(1*4), kac(1*1), pbd(3*4), & pbc(3*1), pad(1*4), pac(1*1), prim(1*3*1*4), scale DO md = 1,4 DO mc = 1,1 DO mb = 1,3 kbc((mc-1)*3+mb) = kbc((mc-1)*3+mb) - ks_bc END DO END DO END DO END SUBROUTINE block_1_3_1_4 SUBROUTINE block_1_3_1_5(kbd,kbc,kad,kac,pbd,pbc,pad,pac,prim,scale) REAL(KIND=dp) :: kbd(3*5), kbc(3*1), kad(1*5), kac(1*1), pbd(3*5), & pbc(3*1), pad(1*5), pac(1*1), prim(1*3*1*5), scale DO md = 1,5 DO mc = 1,1 DO mb = 1,3 DO ma = 1,1 kac((mc-1)*1+ma) = kac((mc-1)*1+ma)-tmp*p_bd END DO END DO END DO END DO END SUBROUTINE block_1_3_1_5 END MODULE hfx_contract_block % powerpc-e300c3-linux-gnu-gfortran-9.0.0-alpha20190120 -O3 -fno-tree-forwprop --param sccvn-max-alias-queries-per-access=1 -c cn013jaw.f90 during GIMPLE pass: linterchange cn013jaw.f90:4:0: 4 | SUBROUTINE contract_block(ma_max,mb_max,mc_max,md_max,kbd,kbc,kad,kac,pbd,pbc,pad,pac,prim,scale) | internal compiler error: in wide_int_to_tree_1, at tree.c:1561 0x6befc2 wide_int_to_tree_1 /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/tree.c:1561 0x106439e build_int_cst(tree_node*, poly_int<1u, long>) /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/tree.c:1355 0x149f832 loop_cand::analyze_induction_var(tree_node*, tree_node*) /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/gimple-loop-interchange.cc:695 0x149fd58 loop_cand::analyze_carried_vars(loop_cand*) /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/gimple-loop-interchange.cc:752 0x14a2195 tree_loop_interchange::interchange(vec<data_reference*, va_heap, vl_ptr>, vec<data_dependence_relation*, va_heap, vl_ptr>) /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/gimple-loop-interchange.cc:1600 0x14a2dcf execute /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190120/work/gcc-9-20190120/gcc/gimple-loop-interchange.cc:2070 (While my target here is powerpc, the ICE is not target-specific.)