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.

Reply via email to