On Mon, Jan 11, 2016 at 1:38 AM, Kugan <kugan.vivekanandara...@linaro.org> wrote: > Hi All, > > I am looking at implementing a ipa vrp pass. Jan Hubicka also talks > about this in 2013 GNU Cauldron as one of the optimization he would like > to see in gcc. So my question is, is any one implementing it. If not we > would like to do that. > > I also looked at the ipa-cp implementation to see how this can be done. > Going by this, one of the way to implement this is (skipping all the > details): > > - Have an early tree-vrp so that we can have value ranges for parameters > at call sites.
I'd rather use the IPA analysis phase for this and use a VRP algorithm that doesn't require ASSERT_EXPR insertion. > - Create jump functions that captures the value ranges of call sites > propagate the value ranges. In 2013 talk, Jan Hubicka talks about > > - Modifying ipa-prop.[h|c] to handles this but wouldn't it be easier to > have its own and much more simpler implementation ? No idea. > - Once we have the value ranges for parameter/return values, we could > rely on tree-vrp to use this and do the optimizations Yep. IPA transform phase should annotate parameter default defs with computed ranges. > Does this make any sense? Any thoughts/suggestions to work on this is > highly appreciated. IPA alignment propagation should already be somewhat similar as in doing an intersection step during propagation. Richard. > Thanks, > Kugan