From 3117ffce4c1598a35e724138735b099262353358 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Sun, 13 Mar 2022 08:57:51 -0700 Subject: [PATCH] x86: Also check _SOFT_FLOAT in Push target("general-regs-only") in 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 017ec29..e0be01d 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 0000000..cb430ee --- /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 + +__attribute__((target ("general-regs-only"))) +int +foo () +{ + return _get_ssp (); +} -- 2.7.4