Message ID | 20220314143117.1253752-1-hjl.tools@gmail.com |
---|---|
State | New |
Headers | show |
Series | [v2] x86: Also check _SOFT_FLOAT in <x86gprintrin.h> | expand |
On Mon, Mar 14, 2022 at 7:31 AM H.J. Lu <hjl.tools@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?
On Tue, Mar 15, 2022 at 10:40 PM H.J. Lu <hjl.tools@gmail.com> wrote: > > On Mon, Mar 14, 2022 at 7:31 AM H.J. Lu <hjl.tools@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.
On Tue, Mar 15, 2022 at 6:57 PM Hongtao Liu <crazylht@gmail.com> wrote: > > On Tue, Mar 15, 2022 at 10:40 PM H.J. Lu <hjl.tools@gmail.com> wrote: > > > > On Mon, Mar 14, 2022 at 7:31 AM H.J. Lu <hjl.tools@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. I am checking it in. > > > #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
"H.J. Lu" <hjl.tools@gmail.com> writes:
Hello,
> I am checking it in.
Are you planning on also applying this patch in the gcc-11 branch?
Thanks,
Marc
On Mon, Mar 14, 2022 at 7:31 AM H.J. Lu <hjl.tools@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.
On Thu, Mar 17, 2022 at 8:05 AM H.J. Lu <hjl.tools@gmail.com> wrote: > > On Mon, Mar 14, 2022 at 7:31 AM H.J. Lu <hjl.tools@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? > I am backporting this to GCC 11.
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 (); +}