HomePhabricator

[LoopPred] Enable new transformation by default

Authored by reames on Nov 6 2019, 3:30 PM.

Description

[LoopPred] Enable new transformation by default

The basic idea of the transform is to convert variant loop exit conditions into invariant exit conditions by changing the iteration on which the exit is taken when we know that the trip count is unobservable. See the original patch which introduced the code for a more complete explanation.

The individual parts of this have been reviewed, the result has been fuzzed, and then further analyzed by hand, but despite all of that, I will not be suprised to see breakage here. If you see problems, please don't hesitate to revert - though please do provide a test case. The most likely class of issues are latent SCEV bugs and without a reduced test case, I'll be essentially stuck on reducing them.

(Note: A bunch of tests were opted out of the new transform to preserve coverage. That landed in a previous commit to simplify revert cycles if they turn out to be needed.)

Details

Committed
reamesNov 6 2019, 3:41 PM
Parents
rG20cbb6cdf8b3: [LoopPred] Selectively disable to preserve test cases
Branches
Unknown
Tags
Unknown