[all-commits] [llvm/llvm-project] 20cbb6: [LoopPred] Selectively disable to preserve test cases

Philip Reames via All-commits all-commits at lists.llvm.org
Wed Nov 6 15:42:01 PST 2019


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 20cbb6cdf8b33dd3732b9ef8702e7946b6d8c739
      https://github.com/llvm/llvm-project/commit/20cbb6cdf8b33dd3732b9ef8702e7946b6d8c739
  Author: Philip Reames <listmail at philipreames.com>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M llvm/test/Transforms/IndVarSimplify/eliminate-trunc.ll
    M llvm/test/Transforms/IndVarSimplify/lftr-dead-ivs.ll
    M llvm/test/Transforms/IndVarSimplify/lftr-pr20680.ll
    M llvm/test/Transforms/IndVarSimplify/lftr-reuse.ll
    M llvm/test/Transforms/IndVarSimplify/lftr.ll
    M llvm/test/Transforms/IndVarSimplify/loop-invariant-conditions.ll
    M llvm/test/Transforms/IndVarSimplify/no-iv-rewrite.ll
    M llvm/test/Transforms/IndVarSimplify/pr24356.ll
    M llvm/test/Transforms/IndVarSimplify/pr38674.ll
    M llvm/test/Transforms/IndVarSimplify/pr39673.ll
    M llvm/test/Transforms/IndVarSimplify/replace-loop-exit-folds.ll
    M llvm/test/Transforms/IndVarSimplify/sink-from-preheader.ll

  Log Message:
  -----------
  [LoopPred] Selectively disable to preserve test cases

I'm about to enable the new loop predication transform by default.  It has the effect of completely destroying many read only loops - which happen to be a super common idiom in our test cases.  So as to preserve test coverage of other transforms, disable the new transform where it would cause sharp test coverage regressions.

(This is semantically part of the enabling commit.  It's committed separate to ease revert if the actual flag flip gets reverted.)


  Commit: 8748be7750920b7bd669a47be72a81ee7f1d305c
      https://github.com/llvm/llvm-project/commit/8748be7750920b7bd669a47be72a81ee7f1d305c
  Author: Philip Reames <listmail at philipreames.com>
  Date:   2019-11-06 (Wed, 06 Nov 2019)

  Changed paths:
    M llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
    M llvm/test/Transforms/IndVarSimplify/exit_value_tests.ll
    M llvm/test/Transforms/LoopUnroll/scevunroll.ll

  Log Message:
  -----------
  [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.)


Compare: https://github.com/llvm/llvm-project/compare/c52efdc52cef...8748be775092


More information about the All-commits mailing list