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

Uros Bizjak ubizjak@gmail.com
Wed Feb 5 20:51:00 GMT 2020


On Wed, Feb 5, 2020 at 6:59 PM H.J. Lu <hjl.tools@gmail.com> wrote:
>
> MS_ABI requires passing aggregates with only float/double in integer
> registers.  Checked gcc outputs against Clang and 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.
>
> OK for master and backports to GCC 8/9 branches?
>
> 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.

LGTM, but should really be reviewed by cygwin, mingw-w64 maintainer (CC'd).

Thanks,
Uros.

>
> --
> H.J.



More information about the Gcc-patches mailing list