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)

Reply via email to