On Fri, 15 Aug 2008, Richard Guenther wrote: > > This is the third patch in the series of optimizing the pass-pipeline, > it applies on top of [1/n]. Cross-posted again to hint people to test > this on their favorite apps. > > Like moving CCP before the initial alias computation is beneficial this > patch moves the first forwprop pass after alias computation before it. > This again should increase the precision of the first alias pass somewhat. > > The second DCE pass right after FRE is somewhat misplaced > (with the above change we now would run FRE, DCE, copy-prop, > merge-phi, vrp, DCE). copy-prop doesn't benefit from DCE and > while copy-prop exposes DCE opportunities the propagator engine > already removes trivially dead statements. Removing this DCE > pass completely doesn't show any negative effects on tramp3d statistics, > in particular VRP is unaffected. > > > The most interesting pass change is the removal of the first > DOM/phi-cprop pair. DOM mostly deals with jump-threading at this > place and for tramp3d catches 473 threads on top of the 2555 ones > performed by the VRP pass that runs right before the first DOM. > > Thus I took the opportunity to rewrite the CFG walk of VRP and > to properly track SSA name liveness for the edges we insert > asserts on. This removes one of the kludges that disabled > the jump-threading capabilities of VRP in some cases. With > that change the number of jump-threads performed by VRP go up > a bit which compensates for the DOM removal (now the second DOM > pass catches the leftovers instead). > > > The patch has not yet been benchmarked (scheduled for tonight) but > it has been bootstrapped and tested on x86_64-unknown-linux-gnu.
SPEC/Polyhedron/C++ tests look good. There is overall improvement in runtime and compile-time. I'll plan to apply this two days after the first patch. Richard.