https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90424
--- Comment #11 from Matthias Kretz (Vir) <mkretz at gcc dot gnu.org> --- "two undef reads should end up the same value" folks are unreasonable anyway. ;) Losing diagnostics would be unfortunate. But I don't have enough context here. don't know if this helps: FWIW, I've sometimes seen asm that looked like GCC considered parts of a SIMD register to hold relevant data - only to overwrite or discard it (unconditionally) in some following instruction. Also, for context, this PR is extracted from the 'std::experimental::simd<T, non-power-of-2>' implementation, which needs to use a power-of-2 vector as its member. Loads and stores then only memcpy the first elements of that vector. (Operators act on all elements, taking care never to divide by 0 in the "padding elements", etc.) These "padding elements" should not slow anything down. (clang allows non-power-of-2 vectors and therefore knows the padding elements are junk; GCC can't know that some elements are unused)