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.