On Tue, Mar 15, 2022 at 10:40 PM H.J. Lu <hjl.to...@gmail.com> wrote: > > 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__ The patch LGTM. > > #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.
-- BR, Hongtao