https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120980
--- Comment #1 from Tamar Christina <tnfchris at gcc dot gnu.org> --- I'm not sure that I'd draw the same conclusion. I view it as the vectorizer has put a 32-byte alignment requirement on the object and so I'd consider the object itself to be 32-bytes sized. So to the notion of the object the vectorizer has it's a partial out of bounds access. Otherwise if a1 was just {0} even doing two element vector loads, and later scalarizing the loads means that that the second scalar access becomes "invalid" while the vector version would be valid. So I don't think this works unless the object is considered to be sized according to the alignment.