aboutsummaryrefslogtreecommitdiff
path: root/gcc/range-op-float.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/range-op-float.cc')
-rw-r--r--gcc/range-op-float.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/range-op-float.cc b/gcc/range-op-float.cc
index 53a0928..0c4ec8d 100644
--- a/gcc/range-op-float.cc
+++ b/gcc/range-op-float.cc
@@ -1891,8 +1891,9 @@ float_binary_op_range_finish (bool ret, frange &r, tree type,
// or the reverse operation introduced a known NAN.
// Say for lhs = op1 * op2 if lhs is [-0, +0] and op2 is too,
// 0 / 0 is known NAN. Just punt in that case.
+ // If NANs aren't honored, we get for 0 / 0 UNDEFINED, so punt as well.
// Or if lhs is a known NAN, we also don't know anything.
- if (r.known_isnan () || lhs.known_isnan ())
+ if (r.known_isnan () || lhs.known_isnan () || r.undefined_p ())
{
r.set_varying (type);
return true;