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
+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
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))
+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
--- /dev/null
+/* { 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 } } } */
+}