https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127599
Bug ID: 127599
Summary: [17 Regression] Intrinsics workloads ICE with segfault
on AArch64 since
g:4182cf11e1e3d2ebcf4f5c3dff157f844a635bf8
Product: gcc
Version: 17.0
Status: UNCONFIRMED
Keywords: ice-on-valid-code
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: tnfchris at gcc dot gnu.org
Target Milestone: ---
Target: aarch64*
The following testcase:
#include <arm_neon.h>
int32x4_t b;
void c() {
b = vrev64q_s32(b);
b = vextq_s32(b, b, 2);
}
compiled with -O1 ICEs with
intri-ice.c:7:1: internal compiler error: Segmentation fault
7 | }
| ^
0x3d7bea3 internal_error(char const*, ...)
src/gcc/gcc/diagnostic-global-context.cc:787
0x1bdd048 crash_signal
src/gcc/gcc/toplev.cc:325
0x766b55e45caf ???
./signal/../sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c:0
0x131257f gimple_bb(gimple const*)
src/gcc/gcc/gimple.h:1919
0x21f36fd aarch64_evpc_rev64_ext
src/gcc/gcc/config/aarch64/aarch64.cc:28559
0x21f5d42 aarch64_expand_vec_perm_const_1
src/gcc/gcc/config/aarch64/aarch64.cc:29042
0x21f610e aarch64_vectorize_vec_perm_const
src/gcc/gcc/config/aarch64/aarch64.cc:29116
0x19cd030 can_vec_perm_const_p(machine_mode, machine_mode, vec_perm_indices
const&, bool)
since
🔍 Bisect completed in 37.71s (18 steps: 10 pass, 8 fail)
🔍 Offending commit details:
commit g:4182cf11e1e3d2ebcf4f5c3dff157f844a635bf8
Author: Pengxuan Zheng
aarch64: Recognize vector permute patterns which can be optimized as
REV64+EXT [PR102055]
Because during a `can_vec_perm_const_p` check the permute is not in IL so BB is
null.
The order of the
if (is_bb_in_loop (gimple_bb (currently_expanding_gimple_stmt)))
return false;
if (d->testing_p)
return true;
checks should be flipped.