[Bug target/85667] ms_abi rules aren't followed when returning and passing short structs with float and double values

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Feb 7 11:38:00 GMT 2020


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

--- Comment #13 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by H.J. Lu <hjl@gcc.gnu.org>:

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

commit r10-6503-gea5ca698dca15dc86b823661ac357a30b49dd0f6
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Fri Feb 7 03:37:46 2020 -0800

    x86-64: Pass aggregates with only float/double in GPRs for MS_ABI

    MS_ABI requires passing aggregates with only float/double in integer
    registers as shown in the output from MSVC v19.10 at:

    https://godbolt.org/z/2NPygd

    This patch fixed:

    FAIL: libffi.bhaible/test-callback.c -W -Wall -Wno-psabi -DDGTEST=54
-Wno-unused-variable -Wno-unused-parameter -Wno-unused-but-set-variable
-Wno-uninitialized -O0 -DABI_NUM=FFI_GNUW64 -DABI_ATTR=MSABI execution test
    FAIL: libffi.bhaible/test-callback.c -W -Wall -Wno-psabi -DDGTEST=54
-Wno-unused-variable -Wno-unused-parameter -Wno-unused-but-set-variable
-Wno-uninitialized -O2 -DABI_NUM=FFI_GNUW64 -DABI_ATTR=MSABI execution test
    FAIL: libffi.bhaible/test-callback.c -W -Wall -Wno-psabi -DDGTEST=55
-Wno-unused-variable -Wno-unused-parameter -Wno-unused-but-set-variable
-Wno-uninitialized -O0 -DABI_NUM=FFI_GNUW64 -DABI_ATTR=MSABI execution test
    FAIL: libffi.bhaible/test-callback.c -W -Wall -Wno-psabi -DDGTEST=55
-Wno-unused-variable -Wno-unused-parameter -Wno-unused-but-set-variable
-Wno-uninitialized -O2 -DABI_NUM=FFI_GNUW64 -DABI_ATTR=MSABI execution test
    FAIL: libffi.bhaible/test-callback.c -W -Wall -Wno-psabi -DDGTEST=56
-Wno-unused-variable -Wno-unused-parameter -Wno-unused-but-set-variable
-Wno-uninitialized -O0 -DABI_NUM=FFI_GNUW64 -DABI_ATTR=MSABI execution test
    FAIL: libffi.bhaible/test-callback.c -W -Wall -Wno-psabi -DDGTEST=56
-Wno-unused-variable -Wno-unused-parameter -Wno-unused-but-set-variable
-Wno-uninitialized -O2 -DABI_NUM=FFI_GNUW64 -DABI_ATTR=MSABI execution test

    in libffi testsuite.

    gcc/

        PR target/85667
        * config/i386/i386.c (function_arg_ms_64): Add a type argument.
        Don't return aggregates with only SFmode and DFmode in SSE
        register.
        (ix86_function_arg): Pass arg.type to function_arg_ms_64.

    gcc/testsuite/

        PR target/85667
        * gcc.target/i386/pr85667-10.c: New test.
        * gcc.target/i386/pr85667-7.c: Likewise.
        * gcc.target/i386/pr85667-8.c: Likewise.
        * gcc.target/i386/pr85667-9.c: Likewise.


More information about the Gcc-bugs mailing list