------- Comment #31 from dberlin at gcc dot gnu dot org  2006-11-09 21:28 
-------
Subject: Re:  [4.3 Regression] Misscompilation of spec2006 gcc

>
> Memory SSA brings down the number of virtual operators to exactly one per
> statement.

However, it does so in a way that makes the traditional things that
actually want to do cool memory optimizations, harder.

I'm still on the fence over whether it's a good idea or not.
>
>
> > verified before we introduce milion new bugs with mem-ssa (nothing
> > personal, it simply is too large and too intrusive change not to bring
> > any).
> >
> Intrusive?  Well, the only pass that was wired to the previous virtual 
> operator
> scheme was PRE.  DSE is also wired but to a lesser extent.  No other
> optimization had to be changed for mem-ssa.  It's obviously intrusive in the
> renamer, but that's it.

Uh, LIM and store sinking are too.  Roughly all of our memory optimizations
are.

The basic problem is in mem-ssa that vdefs and vuses don't accurately
reflect what symbols are being defined and used anymore.  They
represent the factoring of a use and definition of a whole bunch of
symbols.

Things like PRE and DSE break not because they are "wired to the
previous virtual operator scheme" so much, but because they rely on
the virtual use/def chains accurately representing where a symbol
representing a memory access dies.  In mem-ssa, you have VDEF's of the
same symbol all over the place.

The changes i have to make to PRE (and to the other things) to account
for this is actually to rebuild the non-mem-ssa-factored (IE the
current factored) form out of the chains by seeing what symbols they
really affect.

This is going to be expensive, and IMHO, is what almost all of our SSA
memory optimizations are going to have to do.

So while mem-ssa doesn't affect *precision*, it does affect how you
can use the chains in a very significant way.

For at least all the opts i see us doing, it makes them more or less
useless without doing things (like reexpanding them) first. Because
this is true, I'm not sure it's a good idea at all, which is why i'm
still on the fence.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29680

Reply via email to