https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96974
--- Comment #7 from Stam Markianos-Wright <stammark at gcc dot gnu.org> --- (In reply to rsand...@gcc.gnu.org from comment #6) > (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. Cool, thank you for the info and the confirmation! I will carry on investigating to try and find the actual problem