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.

Jeff

Reply via email to