Dne 2017-10-28 09:28, Jeff Law napsal:
Jan,
What's the purpose behind calling vrp_meet and
extract_range_from_unary_expr from within the IPA passes?
AFAICT that is not safe to do. Various paths through those routines
will access static objects within tree-vrp.c which may not be
initialized when IPA runs (vrp_equiv_obstack, vr_value).
While this seems to be working today, it's a failure waiting to happen.
Is there any way you can avoid using those routines? I can't believe
you really need all the complexity of those routines, particularly
extract_range_from_unary_expr. Plus it's just downright fugly from a
modularity standpoint.
We now have three value range propagation passes. The original vrp,
early vrp
which is fater and ipa-cp which does IPA propagation. It seems sane to
me for those
three to share some infrastructure but I did not look in enough of
detail into
these to know if what we have right now is sane thing to do :)
The VRP passes were introduced by Kugan and this part was mostly
reviewed by
Richi, so I am adding them to CC.
The refactoring happened in
https://gcc.gnu.org/ml/gcc-patches/2016-07/msg00891.html
Honza
?
Jeff