On 7/3/19 3:35 AM, Aldy Hernandez wrote: > On 7/2/19 5:36 PM, Jeff Law wrote: > >> I don't see anything inherently concerning here. I do wonder if there's >> any value in having a debugging function in the class that would iterate >> over the ranges and check them for proper canonicalization, verify that >> VR_{VARYING,UNDEFINED} objects do not have equivalences, etc. Thoughts? > > In patch 01 we have: > >> diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c >> index 594ee9adc17..97046c22ed1 100644 >> --- a/gcc/tree-vrp.c >> +++ b/gcc/tree-vrp.c >> @@ -86,6 +86,8 @@ value_range_base::set (enum value_range_kind kind, >> tree min, t >> ree max) >> void >> value_range::set_equiv (bitmap equiv) >> { >> + if (undefined_p () || varying_p ()) >> + equiv = NULL; > > So it shouldn't be possible to attach an equivalence to a VARYING / > UNDEFINED range. Plus, we already have a sanity checker: > >> void >> value_range::check () >> { >> value_range_base::check (); >> switch (m_kind) >> { >> case VR_UNDEFINED: >> case VR_VARYING: >> gcc_assert (!m_equiv || bitmap_empty_p (m_equiv)); >> default:; >> } >> } > > We have no methods for altering a range, except for changing > equivalences. So it shouldn't be possible to create a non-canonicalized > range. Ah. Cool. Thanks for enlightening me ;-)
jeff