https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70754
Bug ID: 70754 Summary: ICE during predictive commoning Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vp at gcc dot gnu.org Target Milestone: --- The following fortran testcase (reduced from a large program) at -Ofast causes an ICE for aarch64-none-linux-gnu during predictive commoning. This is reproducible with version 5.3, 6 and trunk. $ cat y.f90 module m implicit none private save integer, parameter, public :: & ii4 = selected_int_kind(6), & rr8 = selected_real_kind(13) integer (ii4), dimension(40,40,199), public :: xyz public :: foo contains subroutine foo(a) real (rr8), dimension(40,40), intent(out) :: a real (rr8), dimension(40,40) :: b integer (ii4), dimension(40,40) :: c integer i, j do i=1,20 b(i,j) = 123 * a(i,j) + 34 * a(i,j+1) & + 34 * a(i,j-1) + a(i+1,j+1) & + a(i+1,j-1) + a(i-1,j+1) & + a(i-1,j-1) c(i,j) = 123 end do where ((xyz(:,:,2) /= 0) .and. (c /= 0)) a = b/real(c) elsewhere a = 456 endwhere end subroutine foo end module m $ gfortran -v -c -Ofast y.f90 Using built-in specs. COLLECT_GCC=gfortran Target: aarch64-none-linux-gnu Configured with: /tmp/native-aarch64-none-linux-gnu/build/src/gcc/configure --disable-bootstrap --with-isl=/tmp/native-aarch64-none-linux-gnu/build/build-native-aarch64-none-linux-gnu/host-tools --with-cloog=/tmp/native-aarch64-none-linux-gnu/build/build-native-aarch64-none-linux-gnu/host-tools --with-build-sysroot=/tmp/native-aarch64-none-linux-gnu/build/build-native-aarch64-none-linux-gnu/install/glibc --build=aarch64-none-linux-gnu --host=aarch64-none-linux-gnu --target=aarch64-none-linux-gnu --prefix=/ --enable-languages=c,c++,fortran --enable-plugin --with-gmp=/tmp/native-aarch64-none-linux-gnu/build/build-native-aarch64-none-linux-gnu/host-tools --with-mpfr=/tmp/native-aarch64-none-linux-gnu/build/build-native-aarch64-none-linux-gnu/host-tools --with-mpc=/tmp/native-aarch64-none-linux-gnu/build/build-native-aarch64-none-linux-gnu/host-tools --with-gnu-ld --with-plugin-ld=ld --disable-libsanitizer --disable-werror Thread model: posix gcc version 5.3.1 20160415 COLLECT_GCC_OPTIONS='-v' '-c' '-Ofast' '-mlittle-endian' '-mabi=lp64' /usr/bin/../libexec/gcc/aarch64-none-linux-gnu/5.3.1/f951 y.f90 -quiet -dumpbase y.f90 -mlittle-endian -mabi=lp64 -auxbase y -Ofast -version -fintrinsic-modules-path /usr/bin/../lib/gcc/aarch64-none-linux-gnu/5.3.1/finclude -o /tmp/ccIYeMBK.s GNU Fortran version 5.3.1 20160415 (aarch64-none-linux-gnu) compiled by GNU C version 4.8.4, GMP version 4.3.2, MPFR version 3.0.0, MPC version 0.8.2 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 GNU Fortran2008 version 5.3.1 20160415 (aarch64-none-linux-gnu) compiled by GNU C version 4.8.4, GMP version 4.3.2, MPFR version 3.0.0, MPC version 0.8.2 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 y.f90:13:0: subroutine foo(a) ^ internal compiler error: 291) version 5.oot_vars, at tree-predcom.c:1495 0xa8dae3 initialize_root_vars /tmp/native-aarch64-none-linux-gnu/build/src/gcc/gcc/tree-predcom.c:1495 0xa8dae3 initialize_root /tmp/native-aarch64-none-linux-gnu/build/src/gcc/gcc/tree-predcom.c:1542 0xa8dae3 execute_pred_commoning_chain /tmp/native-aarch64-none-linux-gnu/build/src/gcc/gcc/tree-predcom.c:1756 0xa8dae3 execute_pred_commoning /tmp/native-aarch64-none-linux-gnu/build/src/gcc/gcc/tree-predcom.c:1822 0xa8f583 tree_predictive_commoning_loop /tmp/native-aarch64-none-linux-gnu/build/src/gcc/gcc/tree-predcom.c:2585 0xa90b63 tree_predictive_commoning() /tmp/native-aarch64-none-linux-gnu/build/src/gcc/gcc/tree-predcom.c:2612 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.