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).