x86: Also check _SOFT_FLOAT in <x86gprintrin.h>
authorH.J. Lu <hjl.tools@gmail.com>
Sun, 13 Mar 2022 15:57:51 +0000 (08:57 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 16 Mar 2022 13:30:53 +0000 (06:30 -0700)
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
gcc/testsuite/gcc.target/i386/pr104890.c [new file with mode: 0644]

index 017ec29..e0be01d 100644 (file)
@@ -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 (file)
index 0000000..cb430ee
--- /dev/null
@@ -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 ();
+}