On Mon, Mar 14, 2022 at 7:31 AM H.J. Lu <hjl.to...@gmail.com> wrote:
>
> Push target("general-regs-only") in <x86gprintrin.h> if x87 is enabled.
>
> gcc/
>
>         PR target/104890
>         * config/i386/x86gprintrin.h: Also check _SOFT_FLOAT before
>         pushing target("general-regs-only").
>
> gcc/testsuite/
>
>         PR target/104890
>         * gcc.target/i386/pr104890.c: New test.
> ---
>  gcc/config/i386/x86gprintrin.h           |  2 +-
>  gcc/testsuite/gcc.target/i386/pr104890.c | 11 +++++++++++
>  2 files changed, 12 insertions(+), 1 deletion(-)
>  create mode 100644 gcc/testsuite/gcc.target/i386/pr104890.c
>
> diff --git a/gcc/config/i386/x86gprintrin.h b/gcc/config/i386/x86gprintrin.h
> index 017ec299793..e0be01d5e78 100644
> --- a/gcc/config/i386/x86gprintrin.h
> +++ b/gcc/config/i386/x86gprintrin.h
> @@ -24,7 +24,7 @@
>  #ifndef _X86GPRINTRIN_H_INCLUDED
>  #define _X86GPRINTRIN_H_INCLUDED
>
> -#if defined __MMX__ || defined __SSE__
> +#if !defined _SOFT_FLOAT || defined __MMX__ || defined __SSE__
>  #pragma GCC push_options
>  #pragma GCC target("general-regs-only")
>  #define __DISABLE_GENERAL_REGS_ONLY__
> diff --git a/gcc/testsuite/gcc.target/i386/pr104890.c 
> b/gcc/testsuite/gcc.target/i386/pr104890.c
> new file mode 100644
> index 00000000000..cb430eef688
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/i386/pr104890.c
> @@ -0,0 +1,11 @@
> +/* { dg-do compile { target ia32 } } */
> +/* { dg-options "-O2 -mshstk -march=i686" } */
> +
> +#include <x86gprintrin.h>
> +
> +__attribute__((target ("general-regs-only")))
> +int
> +foo ()
> +{
> +  return _get_ssp ();
> +}
> --
> 2.35.1
>

It also fixed:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99744#c18

Any comments on this patch?

-- 
H.J.

Reply via email to