diff options
author | H.J. Lu <hongjiu.lu@intel.com> | 2019-02-19 14:19:33 +0000 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2019-02-19 06:19:33 -0800 |
commit | 23c4471ee530a7a752ca8c7eff111aaa39e8d118 (patch) | |
tree | 2ab27d3898276eb97af06ffead6a4081a0697354 /gcc | |
parent | 19695f4d99e51181c37958680c99502e6f4edd08 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr89397.c | 11 |
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 } } } */ +} |