i386 string compare - code quality regression from 2.95

Zack Weinberg zackw@Stanford.EDU
Mon May 14 21:36:00 GMT 2001


On Mon, May 14, 2001 at 08:36:21PM -0700, Mark Mitchell wrote:
> 
> If Richard approves the patch (as the reigning expert on the x86
> back-end), it's OK for the branch, since it is a performance
> regression.

Thanks.

> It would be nicer, though, if we could understand what is happenning
> in a better way, rather than just trying the peephole route.

Oh, most certainly.

I and a few others have done detailed analyses of this problem in the
past.  I can't find them in the archives for some reason, but look for
a long thread between me, Jan Hubicka, and Joern Rennecke somewhere
around August 2000.

The conclusion I came to was that combine is not capable of this
optimization because (a) the LOG_LINKS are not complete def-use
chains, and (b) it is not prepared to delete all three of the insns
it's looking at.  Fixing either would be major work.  The peephole is
intended as a stop-gap until combine can be dealt with properly.  I
think Daniel Berlin was making noises about reimplementing it from
scratch and using SSA representation...

-- 
zw   Actually, we have scientifically determined that Heisenberg did indeed
     sleep exactly here. However, we have no idea whatsoever just how fast
     asleep he was.
     	-- Dave Aronson



More information about the Gcc-patches mailing list