diff options
Diffstat (limited to 'gcc/c-family/c-cppbuiltin.c')
-rw-r--r-- | gcc/c-family/c-cppbuiltin.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/gcc/c-family/c-cppbuiltin.c b/gcc/c-family/c-cppbuiltin.c index 61a124c509c..b9a0f18cd7e 100644 --- a/gcc/c-family/c-cppbuiltin.c +++ b/gcc/c-family/c-cppbuiltin.c @@ -726,16 +726,19 @@ cpp_iec_559_value (void) ret = 0; /* In strict C standards conformance mode, consider unpredictable - excess precision to mean lack of IEEE 754 support. ??? The same - should apply to unpredictable contraction, but at present - standards conformance options do not enable conforming - contraction. For C++, and outside strict conformance mode, do - not consider these options to mean lack of IEEE 754 support. */ + excess precision to mean lack of IEEE 754 support. The same + applies to unpredictable contraction. For C++, and outside + strict conformance mode, do not consider these options to mean + lack of IEEE 754 support. */ if (flag_iso && !c_dialect_cxx () && TARGET_FLT_EVAL_METHOD != 0 && flag_excess_precision_cmdline != EXCESS_PRECISION_STANDARD) ret = 0; + if (flag_iso + && !c_dialect_cxx () + && flag_fp_contract_mode == FP_CONTRACT_FAST) + ret = 0; /* Various options are contrary to IEEE 754 semantics. */ if (flag_unsafe_math_optimizations |