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

--- Comment #1 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jonathan Yong <[email protected]>:

https://gcc.gnu.org/g:e63a873f1df7493b8b657acafb451bf40166044e

commit r17-2359-ge63a873f1df7493b8b657acafb451bf40166044e
Author: Oleg Tolmatcev <[email protected]>
Date:   Sun Jun 14 00:22:07 2026 +0200

    i386: Fix Win64 __int128 return handling [PR78799]

    GCC could return __int128 values in SSE (%xmm0) on Windows x64 instead
    of following the MS x64 ABI. Root cause: return classification allowed
    128-bit integer-like scalars to be treated as direct register returns.
    This patch updates the Windows x64 return-classification and codegen to
    treat int128 as an indirect return (caller-provided slot passed as first
    argument, pointer returned in RAX).

    gcc:
            PR target/78799
            * config/i386/i386.cc (function_value_ms_64): Do not treat
            integral 16-byte values as SSE returns.
            (ix86_return_in_memory): Likewise avoid treating integral 16-byte
            values as XMM returns.

    gcc/testsuite:
            * gcc.target/i386/pr78799.c: New test.

    Signed-off-by: Oleg Tolmatcev <[email protected]>
    Signed-off-by: Jonathan Yong <[email protected]>

Reply via email to