https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99825
Bug ID: 99825 Summary: ICE in vect_build_combine_node Product: gcc Version: 11.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-11.0.1-alpha20210328 snapshot (g:499fa254ae8c9752d8c2cf3130b13ffddfd83546) ICEs when compiling the following testcase, reduced from gcc/testsuite/gfortran.dg/inline_matmul_11.f90, w/ -march=armv8.3-a -O3: program main complex, dimension(3, 2) :: a complex, dimension(2, 4) :: b complex, dimension(3, 4) :: c, res1 data a /0, (-5., -7.), (11., -13.), 0, 0, 0/ data b /0, 0, 0, 0, 0, 0, 0, 0/ data res1 /0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/ c = matmul(a, conjg(b)) if (any(res1 /= c)) stop 2 end program main % aarch64-linux-gnu-gfortran-11.0.1 -march=armv8.3-a -O3 -c xfxklbt7.f90 during GIMPLE pass: vect xfxklbt7.f90:12:16: 12 | end program main | ^ internal compiler error: in quick_push, at vec.h:1021 0x7c477e vec<std::pair<unsigned int, unsigned int>, va_heap, vl_embed>::quick_push(std::pair<unsigned int, unsigned int> const&) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210328/work/gcc-11-20210328/gcc/vec.h:1021 0x7c489a vec<std::pair<unsigned int, unsigned int>, va_heap, vl_embed>::quick_push(std::pair<unsigned int, unsigned int> const&) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210328/work/gcc-11-20210328/gcc/tree-vect-slp-patterns.c:907 0x7c489a vec<std::pair<unsigned int, unsigned int>, va_heap, vl_ptr>::quick_push(std::pair<unsigned int, unsigned int> const&) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210328/work/gcc-11-20210328/gcc/vec.h:1875 0x7c489a vect_build_combine_node /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210328/work/gcc-11-20210328/gcc/tree-vect-slp-patterns.c:891 0x123f945 complex_mul_pattern::build(vec_info*) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210328/work/gcc-11-20210328/gcc/tree-vect-slp-patterns.c:1068 0x1232418 vect_match_slp_patterns_2 /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210328/work/gcc-11-20210328/gcc/tree-vect-slp.c:2430 0x12323c4 vect_match_slp_patterns_2 /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210328/work/gcc-11-20210328/gcc/tree-vect-slp.c:2422 0x12323c4 vect_match_slp_patterns_2 /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210328/work/gcc-11-20210328/gcc/tree-vect-slp.c:2422 0x12366b7 vect_match_slp_patterns /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210328/work/gcc-11-20210328/gcc/tree-vect-slp.c:2458 0x12366b7 vect_analyze_slp(vec_info*, unsigned int) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210328/work/gcc-11-20210328/gcc/tree-vect-slp.c:2901 0x1213157 vect_analyze_loop_2 /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210328/work/gcc-11-20210328/gcc/tree-vect-loop.c:2316 0x1214eb3 vect_analyze_loop(loop*, vec_info_shared*) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210328/work/gcc-11-20210328/gcc/tree-vect-loop.c:2985 0x1245aa7 try_vectorize_loop_1 /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210328/work/gcc-11-20210328/gcc/tree-vectorizer.c:1009 0x1246540 vectorize_loops() /var/tmp/portage/cross-aarch64-linux-gnu/gcc-11.0.1_alpha20210328/work/gcc-11-20210328/gcc/tree-vectorizer.c:1243