This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: ipa vrp implementation in gcc
- From: Richard Biener <richard dot guenther at gmail dot com>
- To: Kugan <kugan dot vivekanandarajah at linaro dot org>
- Cc: Jan Hubicka <hubicka at ucw dot cz>, "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>
- Date: Mon, 11 Jan 2016 11:37:55 +0100
- Subject: Re: ipa vrp implementation in gcc
- Authentication-results: sourceware.org; auth=none
- References: <5692F974 dot 2000805 at linaro dot org>
On Mon, Jan 11, 2016 at 1:38 AM, Kugan
<kugan.vivekanandarajah@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