diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2016-12-12 17:02:28 +0100 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2016-12-12 17:02:28 +0100 |
commit | b8cab8a5492e9639fc9f0ff23f5c392ac395e8a2 (patch) | |
tree | 3d2a17ed1255c5ae85974678d3bf8b0e1d005a3d /gcc | |
parent | 39c429372b27f6bedfb2459c7695531c1a37c0ea (diff) | |
download | gcc-b8cab8a5492e9639fc9f0ff23f5c392ac395e8a2.zip gcc-b8cab8a5492e9639fc9f0ff23f5c392ac395e8a2.tar.gz gcc-b8cab8a5492e9639fc9f0ff23f5c392ac395e8a2.tar.bz2 |
re PR target/78738 (ICE in extract_insn, at recog.c:2311)
PR target/78738
* config/i386/i386.h (X87_ENABLE_ARITH): Also enable for
flag_unsafe_math_optimizations.
(X87_ENABLE_FLOAT): Ditto.
testsuite/ChangeLog:
PR target/78738
* gcc.target/i386/pr78738.c: New test.
From-SVN: r243559
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/i386/i386.h | 9 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr78738.c | 10 |
4 files changed, 28 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 81b0a3b..4e99e1f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2016-12-12 Uros Bizjak <ubizjak@gmail.com> + + PR target/78738 + * config/i386/i386.h (X87_ENABLE_ARITH): Also enable for + flag_unsafe_math_optimizations. + (X87_ENABLE_FLOAT): Ditto. + 2016-12-12 Marek Polacek <polacek@redhat.com> PR middle-end/78716 diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index 8bc31f9..4d96a45 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -693,13 +693,16 @@ extern const char *host_detect_local_cpu (int argc, const char **argv); /* Whether to allow x87 floating-point arithmetic on MODE (one of SFmode, DFmode and XFmode) in the current excess precision configuration. */ -#define X87_ENABLE_ARITH(MODE) \ - (flag_excess_precision == EXCESS_PRECISION_FAST || (MODE) == XFmode) +#define X87_ENABLE_ARITH(MODE) \ + (flag_unsafe_math_optimizations \ + || flag_excess_precision == EXCESS_PRECISION_FAST \ + || (MODE) == XFmode) /* Likewise, whether to allow direct conversions from integer mode IMODE (HImode, SImode or DImode) to MODE. */ #define X87_ENABLE_FLOAT(MODE, IMODE) \ - (flag_excess_precision == EXCESS_PRECISION_FAST \ + (flag_unsafe_math_optimizations \ + || flag_excess_precision == EXCESS_PRECISION_FAST \ || (MODE) == XFmode \ || ((MODE) == DFmode && (IMODE) == SImode) \ || (IMODE) == HImode) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 35db819..5105869 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-12-12 Uros Bizjak <ubizjak@gmail.com> + + PR target/78738 + * gcc.target/i386/pr78738.c: New test. + 2016-12-12 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * lib/target-supports.exp diff --git a/gcc/testsuite/gcc.target/i386/pr78738.c b/gcc/testsuite/gcc.target/i386/pr78738.c new file mode 100644 index 0000000..d2a2a62 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr78738.c @@ -0,0 +1,10 @@ +/* PR middle-end/78738 */ +/* { dg-do compile } */ +/* { dg-options "-O -std=c99 -ffast-math -mfpmath=387" } */ + +double round (double); + +int foo (double a) +{ + return round (a); +} |