Hi Richard,
what does this try to do? Preserve info VRP computed across PTA?
I think we didn't yet sort out the nonlocal/escaped vs. null handling properly
(or how PTA should handle get_ptr_nonnull). The way you are using it
asks for pt.null to be orthogonal to nonlocal/escaped and thus having
nonlocal or escaped would also require setting ptr.null in PTA. It then
would be also more canonical to set it for pt.anything as well. Which
means conservatively handling it would be equivalent to flipping its
semantic and changing its name to pt.nonnull.
That said, you seem to be simply "reserving" the bit for VRP, keeping it
conservatively true when "not computed". I guess I'm fine with this for now
but it should be documented in the header file that way.
Thanks for the comments.
To summarize, currently I am not relying on PTA analysis at all. Just
saving null from VRP (or rather nonnull) and preserving it across PTA.
Primary intention is to pass it for PARM_DECL SSA names (from ipa-vrp).
In this case, using pt.anything/nonlocal/escaped will only make the
result more pessimistic.
Ideally, we should improve pt.null within PTA but for now as you said, I
will document it.
When we start using pt.null from PTA analysis, we would also have to
take into account pt.anything/nonlocal/escaped.
Does that make sense?
Thanks,
Kugan