On Mon, 2011-07-04 at 17:30 +0200, Michael Matz wrote: > Hi, > > On Mon, 4 Jul 2011, Richard Guenther wrote: > > > I still do not like the implementation of yet another CSE machinery > > given that we already have two. > > From reading it it really seems to be a normal block-local CSE, without > anything fancy. Hence, moving the pass just a little earlier (before > pass_vrp/pass_dominator) should already provide for all optimizations. If > not those should be improved. > > I see that it is used for also getting rid of the zero-offset statements > in case non-zero-offsets follow. I think that's generally worthwhile so > probably should be done in one of the above optimizers.
Just FYI, I've verified that this works as expected; the zero-offset optimization can be moved into the dom2 pass without too much difficulty, and the CSE in the dom2 pass is sufficient for what I've seen in my limited testing. This reduces the size and complexity of the patch considerably -- thanks! If it turns out that we end up going this route, it will mean modifying at least 11 more scan tests whose expected output out of dom2 changes. However, I'll be turning my attention now to some of the alternate implementations that Richard suggested, to see how much of the gains can be obtained by other means. Thanks, Bill