https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127948
--- Comment #2 from Kris Fabmoos <kris.fabmoos at gmail dot com> --- (In reply to Drea Pinski from comment #1) > >**Why we think it is the REE pass.** > > ix86_hard_regno_call_part_clobbered should causing the correct thing. > > It might be that REE is not taking that account. Thanks, that matches what we see. Before REE the code is correct: a 128-bit load into xmm6 (which survives the calls under the MS ABI), then after the calls an in-place vpmovsxdq %xmm6,%ymm6. REE merges the extension into the early load, so ymm6 now holds a 256-bit value across the calls, and the part-clobbered check is never consulted for the widened mode. We're happy to test a patch on x86_64-w64-mingw32 against the attached reproducer and our original program. Until then we build with -fno-ree.
