aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/value-range.cc8
-rw-r--r--gcc/value-range.h4
2 files changed, 8 insertions, 4 deletions
diff --git a/gcc/value-range.cc b/gcc/value-range.cc
index dc42b6d..505eb92 100644
--- a/gcc/value-range.cc
+++ b/gcc/value-range.cc
@@ -422,7 +422,7 @@ frange::combine_zeros (const frange &r, bool union_p)
if (maybe_isnan ())
m_kind = VR_NAN;
else
- m_kind = VR_UNDEFINED;
+ set_undefined ();
changed = true;
}
return changed;
@@ -506,7 +506,7 @@ frange::intersect_nans (const frange &r)
if (maybe_isnan ())
m_kind = VR_NAN;
else
- m_kind = VR_UNDEFINED;
+ set_undefined ();
if (flag_checking)
verify_range ();
return true;
@@ -558,7 +558,7 @@ frange::intersect (const vrange &v)
if (maybe_isnan ())
m_kind = VR_NAN;
else
- m_kind = VR_UNDEFINED;
+ set_undefined ();
if (flag_checking)
verify_range ();
return true;
@@ -696,7 +696,7 @@ frange::verify_range ()
switch (m_kind)
{
case VR_UNDEFINED:
- // m_type is ignored.
+ gcc_checking_assert (!m_type);
return;
case VR_VARYING:
gcc_checking_assert (m_type);
diff --git a/gcc/value-range.h b/gcc/value-range.h
index 325ed08..3668b33 100644
--- a/gcc/value-range.h
+++ b/gcc/value-range.h
@@ -1083,6 +1083,10 @@ inline void
frange::set_undefined ()
{
m_kind = VR_UNDEFINED;
+ m_type = NULL;
+ m_pos_nan = false;
+ m_neg_nan = false;
+ // m_min and m_min are unitialized as they are REAL_VALUE_TYPE ??.
if (flag_checking)
verify_range ();
}