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 >
OK to backport to GCC 11? Thanks. -- H.J.