This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [tree-ssa] copy propagation and the abstraction penalty


On Thu, May 15, 2003 at 03:48:29PM -0700, Joe Buck wrote:
> On Thu, May 15, 2003 at 03:17:48PM -0700, Richard Henderson wrote:
> > Indeed.  And for this case I definitely think it's the right thing to do.
> > 
> > IMO constant propagation should be able to take
> > 
> >     T.8_2 = &<UVa150>;
> >     {
> >       struct complex * const this;
> > 
> >       this_3 = (struct complex * const)T.8_2;
> >       {
> >         this->re = 1.0e+0;
> > 
> > and turn it into
> > 
> > 	(&<UVa150>)->re = 1.0e+0
> > 
> > which folds to
> > 
> > 	<UVa150>.re = 1.0e+0
> > 
> > At which point we have no aliasing problem, and a subsequent round
> > of constant propagation ought to be able to send 1.0e+0 to its 
> > destination.
> 
> That helps this case, but in many other cases the content of the temporary
> struct's field will be a variable, and we would still want to copy-propagate.

Sigh.  Sorry Richard: of course the addresses are constant; I was focusing
on the 1.0e0 constant.  As a Gilda Radner character used to say, never
mind.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]