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
This commit is contained in:
parent
19695f4d99
commit
23c4471ee5
4 changed files with 25 additions and 4 deletions
|
@ -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
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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
|
||||
|
|
11
gcc/testsuite/gcc.target/i386/pr89397.c
Normal file
11
gcc/testsuite/gcc.target/i386/pr89397.c
Normal file
|
@ -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 } } } */
|
||||
}
|
Loading…
Add table
Reference in a new issue