Andrew MacLeod <[email protected]> writes: > This patch provides the initial implementation to track points-to > information in prange.
Very cool. This was one of two things I really wished I could've gotten done before stepping aside. I'm glad it didn't fall through the cracks. And the second one is... getting rid of DOM. With prange having points-to info, ISTM that all that's standing in the way of getting rid of DOM is doing the hard work of finding what the side tables are getting that ranger doesn't. It theory it should be nothing; in practice it's always complicated :). Last time I did an audit of what the forward threader was getting I think it was some pointer equivalency stuff, as I think we were even getting all the floating point stuff with frange. That is, if y'all still agree that removing the forward threader along with DOM is the way to go. I don't know if anything has changed. Maybe after summer is over, and the kids are back in school, I can take a stab at auditing what remains to be done, to at least get an idea. Again, thanks for your hard work on this. Sorry I haven't been able to help much. Aldy > > It currently only tracks values which are is_gimple_min_invariant_p > (), and can be access via a fairly simple API: > > expr will be either NULL_TREE is there is no points to info, or the > expression. > > // unknown_p () is true if no object is pointed to. > bool pt_unknown_p () const; > > // Invariant points-to are is_gimple_min_invariant_p (). > // Return expression or NULL_TREE for points-to or away > tree pt_invariant () const; > tree pt_invariant_away () const; > > // Return true if present and identical for THIS and R. > bool pt_invariant_p (const prange &r) const; > bool pt_invariant_away_p (const prange &r) const; > > bool pt_invert (); > bool pt_inverted_p (const prange &r) const; > > This patch provides the implementation and adjusts a couple of > testcases which fail due to IPA have better info immediately. > > Bootstrapped on x86_64-pc-linux-gnu with no regressions. Pushed. > Andrew
