aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/i386/i386.h
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2016-12-12 17:02:28 +0100
committerUros Bizjak <uros@gcc.gnu.org>2016-12-12 17:02:28 +0100
commitb8cab8a5492e9639fc9f0ff23f5c392ac395e8a2 (patch)
tree3d2a17ed1255c5ae85974678d3bf8b0e1d005a3d /gcc/config/i386/i386.h
parent39c429372b27f6bedfb2459c7695531c1a37c0ea (diff)
downloadgcc-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/config/i386/i386.h')
-rw-r--r--gcc/config/i386/i386.h9
1 files changed, 6 insertions, 3 deletions
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)