https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68930

--- Comment #5 from Jan Hubicka <hubicka at ucw dot cz> ---
> But how would you represent this info?  I don't see how it's going to
> do better than the inliner inserting an extra initialization (of course
> that might stay around if there are no cleanup opportunities and actually
> make the code bigger & slower)

Just keep the existing transformation data used by ipcp_modif_dom_walker
and feed it into GVN at entry block.

Consider code:

foo (struct a)
{
  struct b=a;
  return b.a;
}

this is a common case of post inlining code.  Now the way ipa-prop works if we
figure out that b.a=1 it won't update the copy b=a because it is not access to
the field it knows value of so no transformation happens.
GVN will figure out that the return is equivalent to a.a and if it knew that
a.a==1
it would optimize the code.

It is quite important bug that we work hard to figure out all those constants
and
then we drop them to the floor :)

Honza

Reply via email to