On 11/9/18 9:19 AM, Richard Biener wrote:
This adds value_range_base, a base class of class value_range
with all members but the m_equiv one.
First of all, thanks so much for doing this!
I have looked into the sole GC user, IPA propagation, and replaced
the value_range use there with value_range_base since it also
asserted the equiv member is always NULL.
This in turn means I have written down that GC users only can
use value_range_base (and fixed the accessability issue with
adding a bunch of friends).
+
/* Range of values that can be associated with an SSA_NAME after VRP
- has executed. */
-class GTY((for_user)) value_range
+ has executed. Note you may only use value_range_base with GC memory. */
+class GTY((for_user)) value_range_base
+{
GC users cannot use the derived value_range? Either way could you
document the "why" this is the case above?
And thanks for adding those accessibility friends, they're a pain to get
right. It's a pity we have to go to such lengths to deal with this shit.
I have moved all methods that are required for this single user
sofar (without looking with others are trivially movable because
they do not look at equivs - that's for a followup). I ended
That would be great.
up basically duplicating the ::union_ wrapper around union_ranges
(boo). Some more refactoring might save us a few lines here.
There are two places where IPA prop calls extract_range_from_unary_expr.
I've temporarily made it use value_range temporaries there given
I need to think about the few cases of ->deep_copy () we have in
there. IMHO equiv handling would need to move to the callers or
rather "copies" shouldn't be handled by extract_range_from_unary_expr.
Well, I need to think about it. (no, I don't want to make that
function virtual)
The other workers might be even easier to massage to work on
value_range_base only.
If value_range_base is the predominant idiom, perhaps it should be
called value_range and the derived class be called
value_range_with_equiv or some such?
Bootstrap and regtest running on x86_64-unknown-linux-gnu.
If that goes well I want to apply this even in its incomplete form.
Unless there are any complaints?
Fine by me. Again, thanks.
Aldy