https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116458

--- Comment #3 from Alexander Monakov <amonakov at gcc dot gnu.org> ---
David, thanks for Cc'ing me and for running Valgrind builds!

Richi, I'll check in more detail later today, I think we should unbreak
Valgrind builds ASAP by initializing padding under #ifdef
ENABLE_VALGRIND_WORKAROUNDS.

Your explanation makes sense to me, but it's pointing to a pedantically real
issue (the code relies on never getting "wobbly values" from uninit reads, or
else it needs asm propagation barriers or atomic-relaxed loads to ensure the
values are really loaded just once, but neither would be visible to Valgrind in
the end).

"Wobbly values" aside, judging from how this never arised with other vectorized
helpers, Valgrind treats some instructions optimistically? Probably pmovmskb
from a partially-uninit vector yields a fully-initialized mask? If so, making
the new helper work as well without workarounds should be doable (I'll see if I
can come up with a testcase for Valgrind).

Reply via email to