On Tue, May 31, 2016 at 11:12 PM, Jeff Law <l...@redhat.com> wrote: > On 05/31/2016 11:38 AM, Richard Biener wrote: > >>> Essentially we want to limit the backwards substitution to single step >>> within a single block for that case (which is trivially easy). That >>> would allow us to run a very cheap threader during early optimizations. >> >> >> Just do double check - the pass does both forward and backward threading >> and DOM/VRP now do neither themselves? > > Will do. It's pretty easy. I suspect there's a lot of low hanging fruit. > > The backward pass is strictly backward substitution & simplification and > independent of DOM/VRP. I believe we're ultimately going to want a param or > something to determine how far back it goes in the IL. > > The old threader (still called from VRP/DOM) is primarily forward based > using equivalence tables and ASSERT_EXPRs to simplify expressions as it > walks statements in the block. > > I'm pretty sure everything done by the old threader can be more easily and > efficiently modeled in the backwards threader. One a couple infrastructure > items are addressed, I want to start looking at cutting back on the amount > of work done in the old threader with the goal of starting to eliminate > calls into it completely.
Maybe to rephrase my question - DOM/VRP now do no threading anymore? And the "backwards" threader is named "backwards" due to its implementation and not because it only threads across backedges? Richard. > Jeff