gcc/ChangeLog:
* value-range.cc (frange::combine_zeros): Call set_undefined.
(frange::intersect_nans): Same.
(frange::intersect): Same.
(frange::verify_range): Undefined ranges do not have a type.
* value-range.h (frange::set_undefined): Clear NAN flags and type.
if (maybe_isnan ())
m_kind = VR_NAN;
else
- m_kind = VR_UNDEFINED;
+ set_undefined ();
changed = true;
}
return changed;
if (maybe_isnan ())
m_kind = VR_NAN;
else
- m_kind = VR_UNDEFINED;
+ set_undefined ();
if (flag_checking)
verify_range ();
return true;
if (maybe_isnan ())
m_kind = VR_NAN;
else
- m_kind = VR_UNDEFINED;
+ set_undefined ();
if (flag_checking)
verify_range ();
return true;
switch (m_kind)
{
case VR_UNDEFINED:
- // m_type is ignored.
+ gcc_checking_assert (!m_type);
return;
case VR_VARYING:
gcc_checking_assert (m_type);
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 ();
}