Cgraph alias reorg 8/14 (ipa-cp and ipa-prop update)
Jan Hubicka
hubicka@ucw.cz
Mon Jun 13 19:44:00 GMT 2011
> Hi,
>
> On Fri, Jun 10, 2011 at 04:55:43PM +0200, Jan Hubicka wrote:
> > Hi,
>
> > this patch updated ipa-cp and ipa-prop for aliases. It is basically
> > easy - we don't analyze nodes represneting aliases and when
> > propagating we skip them, like everywhere else.
> >
> > There are two problems I noticed. First we should not propagate
> > through calls that are overwritable. When non-overwritable function
> > A has overwritable alias B, we should propagate through calls to A,
> > but not throug calls to B. As discussed on IRC it is probably best
> > to zap the jump functions in question at IPA stage (because at
> > analysis stage it is not clear at all if the alias will end up
> > overwritable with LTO).
> >
>
> OK. Nevertheless, I'd prefer to do this in context of the new
> IPA-CP.
Yep, lets see how much work will be to get new ipa-cp in. I will try
to look into it more this week.
>
> > Similar problem already exists with code in
> > ipa_compute_jump_functions that looks into a callee that might
> > change with LTO.
>
> I either don't understand or fail to see how this is different from
> the first problem. We even compute jump functions of indirect edges
> precisely because we hope they will be changed later on...
Well, it is sort of similar. What is new that same function can be now
called in overwritable and non-overwritable way. The old problem is that
what used to be overwritable at analysis time is not neccesarily so at WPA
time.
>
>
> > Index: ipa-cp.c
> > ===================================================================
> > --- ipa-cp.c (revision 174905)
> > +++ ipa-cp.c (working copy)
> > @@ -818,7 +828,7 @@ ipcp_iterate_stage (void)
> > /* Some lattices have changed from IPA_TOP to IPA_BOTTOM.
> > This change should be propagated. */
> > {
> > - gcc_assert (n_cloning_candidates);
> > + /*gcc_assert (n_cloning_candidates);*/
> > ipcp_propagate_stage ();
> > }
> > if (dump_file)
>
>
> I know this assert can be horribly irritating but so far it has been
> very useful at spotting all kinds of errors at various places. (In
> fact, you added it :-)
>
> But as I want to get the whole IPA-CP replaced, I don't care all that
> much.
I am pretty sure I didn't meant to remove it and had the whole thing tested with the assert.
The issue was that once aliases are skipped by propagate stage, the lattices stay top.
But I already fixed it elsewhere, so I will regtest reverting that hunk. Thanks for
pointing this out!
Honza
>
> Martin
More information about the Gcc-patches
mailing list