[LoopGuardWidening] Split out a loop pass version of GuardWidening
authorPhilip Reames <listmail@philipreames.com>
Fri, 27 Apr 2018 17:29:10 +0000 (17:29 +0000)
committerPhilip Reames <listmail@philipreames.com>
Fri, 27 Apr 2018 17:29:10 +0000 (17:29 +0000)
commit9258e9d190af643ed5d770fa8a965af3b7090502
tree5aace552e83475a4e30dca97231a21d95287da6c
parentf6d595bd44573ede3c1af64ef75ea9b4a08ceace
[LoopGuardWidening] Split out a loop pass version of GuardWidening

The idea is to have a pass which performs the same transformation as GuardWidening, but can be run within a loop pass manager without disrupting the pass manager structure.  As demonstrated by the test case, this doesn't quite get there because of issues with post dom, but it gives a good step in the right direction.  the motivation is purely to reduce compile time since we can now preserve locality during the loop walk.

This patch only includes a legacy pass.  A follow up will add a new style pass as well.

llvm-svn: 331060
llvm/include/llvm/InitializePasses.h
llvm/include/llvm/LinkAllPasses.h
llvm/include/llvm/Transforms/Scalar.h
llvm/lib/Transforms/Scalar/GuardWidening.cpp
llvm/lib/Transforms/Scalar/Scalar.cpp
llvm/test/Transforms/GuardWidening/loop-schedule.ll [new file with mode: 0644]