https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100981
Bug ID: 100981 Summary: ICE in info_for_reduction, at tree-vect-loop.c:4897 Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- Target: aarch64-linux-gnu gfortran-12.0.0-alpha20210606 snapshot (g:fed94fc9e704b0de228499495b7ca4d4c79ef76b) ICEs when compiling the following testcase w/ -march=armv8.3-a -O3 -ftree-parallelize-loops=2 -fno-signed-zeros -fno-trapping-math: complex function cdcdot(n, cx) implicit none integer :: n, i, kx complex :: cx(*) double precision :: dsdotr, dsdoti, dt1, dt3 kx = 1 do i = 1, n dt1 = real(cx(kx)) dt3 = aimag(cx(kx)) dsdotr = dsdotr + dt1 * 2 - dt3 * 2 dsdoti = dsdoti + dt1 * 2 + dt3 * 2 kx = kx + 1 end do cdcdot = cmplx(real(dsdotr), real(dsdoti)) return end function cdcdot % aarch64-linux-gnu-gfortran-12.0.0 -march=armv8.3-a -O3 -ftree-parallelize-loops=2 -fno-signed-zeros -fno-trapping-math -c xrvsc8ow.f90 during GIMPLE pass: vect xrvsc8ow.f90:9:8: 9 | do i = 1, n | ^ internal compiler error: in info_for_reduction, at tree-vect-loop.c:4897 0x7c8b0d info_for_reduction(vec_info*, _stmt_vec_info*) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20210606/work/gcc-12-20210606/gcc/tree-vect-loop.c:4897 0x122d008 vectorizable_live_operation(vec_info*, _stmt_vec_info*, gimple_stmt_iterator*, _slp_tree*, _slp_instance*, int, bool, vec<stmt_info_for_cost, va_heap, vl_ptr>*) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20210606/work/gcc-12-20210606/gcc/tree-vect-loop.c:8547 0x11ed1d7 can_vectorize_live_stmts /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20210606/work/gcc-12-20210606/gcc/tree-vect-stmts.c:10619 0x1216858 vect_transform_stmt(vec_info*, _stmt_vec_info*, gimple_stmt_iterator*, _slp_tree*, _slp_instance*) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20210606/work/gcc-12-20210606/gcc/tree-vect-stmts.c:11003 0x124b296 vect_schedule_slp_node /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20210606/work/gcc-12-20210606/gcc/tree-vect-slp.c:6302 0x12596cc vect_schedule_scc /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20210606/work/gcc-12-20210606/gcc/tree-vect-slp.c:6516 0x125a71f vect_schedule_slp(vec_info*, vec<_slp_instance*, va_heap, vl_ptr>) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20210606/work/gcc-12-20210606/gcc/tree-vect-slp.c:6580 0x1236e7c vect_transform_loop(_loop_vec_info*, gimple*) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20210606/work/gcc-12-20210606/gcc/tree-vect-loop.c:9538 0x1265f0f try_vectorize_loop_1 /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20210606/work/gcc-12-20210606/gcc/tree-vectorizer.c:1104 0x1266ca0 vectorize_loops() /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20210606/work/gcc-12-20210606/gcc/tree-vectorizer.c:1243