https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96974
--- Comment #6 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> --- (In reply to Stam Markianos-Wright from comment #5) > I'm tempted to try and add a reverse: > > || multiple_p (*stmt_vectype_out, nunits_vectype) > > And then regtest, but I probably need to do more reading around to figure out > what we really should be expecting each case! I don't think that's right. If nunits_vectype is not a multiple of stmt_vectype then the stmt_vectype contains (or might contain) unused elements. The vectoriser isn't set up to work like that: all operations are currently supposed to be full-vector operations (possibly predicated, on SVE and AVX). AFAICT the assert is correct and it's showing up a problem elsewhere.