https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106339
Tejas Belagod <belagod at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |belagod at gcc dot gnu.org Ever confirmed|0 |1 Last reconfirmed| |2022-09-06 Status|UNCONFIRMED |NEW --- Comment #1 from Tejas Belagod <belagod at gcc dot gnu.org> --- Also breaks my glibc build - ICEs with this test case reduced from glibc/dlfcn/dlinfo.c: /* aarch64-none-linux-gnu-gcc -march=armv8-a+sve -O2 ice.c */ typedef long unsigned int size_t; struct link_map { size_t l_tls_modid; }; # 24 "dlinfo.c" 2 struct dlinfo_args { void *handle; int request; void *arg; }; void dlinfo_doit (void *argsblock) { struct dlinfo_args *const args = argsblock; struct link_map *l = args->handle; *(size_t *) args->arg = 0; *(size_t *) args->arg = l->l_tls_modid; } >From my prelimnary investigation, it looks like tree-vect-slp is trying to build the constant vector using duplicate and interleave with 2 V1DI vectors as with the other example posted above. I haven't dug deep enough if V1DI vectors are the right thing to do here.