https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102890
Bug ID: 102890 Summary: [12 Regression] ICE in duplicate_and_interleave, at tree-vect-slp.c:6173 Product: gcc Version: 12.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: --- Target: aarch64-linux-gnu gcc-12.0.0-alpha20211017 snapshot (g:5d4d64faa71a6389bfb76bfb3334b63360cf62c0) ICEs when compiling the following testcase, reduced from gcc/testsuite/gcc.dg/vect/fast-math-vect-call-1.c, w/ -march=armv8-a+sve -O2 -fassociative-math -fno-math-errno -fno-signed-zeros -fno-trapping-math: float a[8], b[8], c[8]; void f4 (float d_0, int f4_i) { while (f4_i < 1) { a[3 * f4_i] = 1.0f + __builtin_copysignf(b[3 * f4_i], c[3 * f4_i]) + __builtin_sqrtf (d_0); a[3 * f4_i + 1] = 2.0f + __builtin_copysignf(b[3 * f4_i + 1], c[3 * f4_i + 1]) + __builtin_sqrtf (d_0); a[3 * f4_i + 2] = 3.0f + __builtin_copysignf(b[3 * f4_i + 2], c[3 * f4_i + 2]) + __builtin_sqrtf (d_0); ++f4_i; } } % aarch64-linux-gnu-gcc-12.0.0 -march=armv8-a+sve -O2 -fassociative-math -fno-math-errno -fno-signed-zeros -fno-trapping-math -c bd4s9dy9.c during GIMPLE pass: vect bd4s9dy9.c: In function 'f4': bd4s9dy9.c:4:1: internal compiler error: in duplicate_and_interleave, at tree-vect-slp.c:6173 4 | f4 (float d_0, int f4_i) | ^~ 0x7e6dcf duplicate_and_interleave(vec_info*, gimple**, tree_node*, vec<tree_node*, va_heap, vl_ptr> const&, unsigned int, vec<tree_node*, va_heap, vl_ptr>&) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20211017/work/gcc-12-20211017/gcc/tree-vect-slp.c:6173 0x120360e vect_create_constant_vectors /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20211017/work/gcc-12-20211017/gcc/tree-vect-slp.c:6394 0x120360e vect_schedule_slp_node /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20211017/work/gcc-12-20211017/gcc/tree-vect-slp.c:7099 0x121525f vect_schedule_scc /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20211017/work/gcc-12-20211017/gcc/tree-vect-slp.c:7417 0x1215e51 vect_schedule_scc /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20211017/work/gcc-12-20211017/gcc/tree-vect-slp.c:7434 0x1215e51 vect_schedule_scc /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20211017/work/gcc-12-20211017/gcc/tree-vect-slp.c:7434 0x1215e51 vect_schedule_scc /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20211017/work/gcc-12-20211017/gcc/tree-vect-slp.c:7434 0x121673f vect_schedule_slp(vec_info*, vec<_slp_instance*, va_heap, vl_ptr> const&) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20211017/work/gcc-12-20211017/gcc/tree-vect-slp.c:7570 0x11ef0a9 vect_transform_loop(_loop_vec_info*, gimple*) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20211017/work/gcc-12-20211017/gcc/tree-vect-loop.c:9685 0x122251f try_vectorize_loop_1 /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20211017/work/gcc-12-20211017/gcc/tree-vectorizer.c:1110 0x1223141 vectorize_loops() /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20211017/work/gcc-12-20211017/gcc/tree-vectorizer.c:1249