make sure we build canonically correct ranges.
From-SVN: r277794
+2019-11-04 Aldy Hernandez <aldyh@redhat.com>
+
+ * tree-vrp.c (value_range_base::invert): Use constructors to build
+ range.
+
2019-11-04 Aldy Hernandez <aldyh@redhat.com>
* tree-vrp.c (range_int_cst_singleton_p): Remove.
void
value_range_base::invert ()
{
+ /* We can't just invert VR_RANGE and VR_ANTI_RANGE because we may
+ create non-canonical ranges. Use the constructors instead. */
if (m_kind == VR_RANGE)
- m_kind = VR_ANTI_RANGE;
+ *this = value_range_base (VR_ANTI_RANGE, m_min, m_max);
else if (m_kind == VR_ANTI_RANGE)
- m_kind = VR_RANGE;
+ *this = value_range_base (VR_RANGE, m_min, m_max);
else
gcc_unreachable ();
}