aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorH.J. Lu <hongjiu.lu@intel.com>2019-02-19 14:19:33 +0000
committerH.J. Lu <hjl@gcc.gnu.org>2019-02-19 06:19:33 -0800
commit23c4471ee530a7a752ca8c7eff111aaa39e8d118 (patch)
tree2ab27d3898276eb97af06ffead6a4081a0697354 /gcc
parent19695f4d99e51181c37958680c99502e6f4edd08 (diff)
downloadgcc-23c4471ee530a7a752ca8c7eff111aaa39e8d118.zip
gcc-23c4471ee530a7a752ca8c7eff111aaa39e8d118.tar.gz
gcc-23c4471ee530a7a752ca8c7eff111aaa39e8d118.tar.bz2
i386: Set ix86_fpmath to FPMATH_387 without SSE
ix86_fpmath should be set to combination of FPMATH_387 and FPMATH_SSE. When SSE is disabled, it should be set to FPMATH_387 and 387 codegen is also controlled by -msoft-float. gcc/ PR target/89397 * config/i386/i386.c (ix86_option_override_internal): Set opts->x_ix86_fpmath to FPMATH_387 when SSE is disabled. gcc/testsuite/ PR target/89397 * gcc.target/i386/pr89397.c: New test. From-SVN: r269017
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i386/i386.c7
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/i386/pr89397.c11
4 files changed, 25 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3c9e17a..58630f7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2019-02-19 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/89397
+ * config/i386/i386.c (ix86_option_override_internal): Set
+ opts->x_ix86_fpmath to FPMATH_387 when SSE is disabled.
+
2019-02-19 Richard Biener <rguenther@suse.de>
PR middle-end/88074
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 591a7cd..bed1733 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -4310,10 +4310,9 @@ ix86_option_override_internal (bool main_args_p,
if (!TARGET_SSE_P (opts->x_ix86_isa_flags))
{
if (TARGET_80387_P (opts->x_target_flags))
- {
- warning (0, "SSE instruction set disabled, using 387 arithmetics");
- opts->x_ix86_fpmath = FPMATH_387;
- }
+ warning (0, "SSE instruction set disabled, using 387 arithmetics");
+ /* NB: 387 codegen is guarded by TARGET_80387. */
+ opts->x_ix86_fpmath = FPMATH_387;
}
else if ((opts->x_ix86_fpmath & FPMATH_387)
&& !TARGET_80387_P (opts->x_target_flags))
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 9e34716..5796a15 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-02-19 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/89397
+ * gcc.target/i386/pr89397.c: New test.
+
2019-02-19 Richard Biener <rguenther@suse.de>
PR middle-end/88074
diff --git a/gcc/testsuite/gcc.target/i386/pr89397.c b/gcc/testsuite/gcc.target/i386/pr89397.c
new file mode 100644
index 0000000..42afa6c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr89397.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-mfpmath=sse,387 -msoft-float -mno-sse" } */
+
+_Atomic double a;
+int b;
+
+void
+foo (void)
+{
+ a += b; /* { dg-error "SSE register return with SSE disabled" "" { target { ! ia32 } } } */
+}