diff options
author | maekawatoshiki <konndennsa@gmail.com> | 2021-05-23 22:32:01 +0900 |
---|---|---|
committer | maekawatoshiki <konndennsa@gmail.com> | 2021-05-23 22:32:01 +0900 |
commit | d65c32fb41b03a35a2a16330ba1ea15cf6818f04 (patch) | |
tree | cc6ada95ac6859f79bfb417afa92c6e965deffc7 /llvm/lib/Transforms/Utils/LoopUnrollAndJam.cpp | |
parent | d4abbcfb0d4aa57878c17940265035c787e3bec0 (diff) | |
download | llvm-d65c32fb41b03a35a2a16330ba1ea15cf6818f04.zip llvm-d65c32fb41b03a35a2a16330ba1ea15cf6818f04.tar.gz llvm-d65c32fb41b03a35a2a16330ba1ea15cf6818f04.tar.bz2 |
[LoopUnrollAndJam] Change LoopUnrollAndJamPass to LoopNest pass
This patch changes LoopUnrollAndJamPass from FunctionPass to LoopNest pass.
The next patch will utilize LoopNest to effectively handle loop nests.
Reviewed By: Whitney
Differential Revision: https://reviews.llvm.org/D99149
Diffstat (limited to 'llvm/lib/Transforms/Utils/LoopUnrollAndJam.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/LoopUnrollAndJam.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/llvm/lib/Transforms/Utils/LoopUnrollAndJam.cpp b/llvm/lib/Transforms/Utils/LoopUnrollAndJam.cpp index 66407db..12196f6 100644 --- a/llvm/lib/Transforms/Utils/LoopUnrollAndJam.cpp +++ b/llvm/lib/Transforms/Utils/LoopUnrollAndJam.cpp @@ -49,6 +49,7 @@ #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/GenericDomTree.h" #include "llvm/Support/raw_ostream.h" +#include "llvm/Transforms/Scalar/LoopPassManager.h" #include "llvm/Transforms/Utils/BasicBlockUtils.h" #include "llvm/Transforms/Utils/Cloning.h" #include "llvm/Transforms/Utils/LoopUtils.h" @@ -221,12 +222,11 @@ static void moveHeaderPhiOperandsToForeBlocks(BasicBlock *Header, If EpilogueLoop is non-null, it receives the epilogue loop (if it was necessary to create one and not fully unrolled). */ -LoopUnrollResult -llvm::UnrollAndJamLoop(Loop *L, unsigned Count, unsigned TripCount, - unsigned TripMultiple, bool UnrollRemainder, - LoopInfo *LI, ScalarEvolution *SE, DominatorTree *DT, - AssumptionCache *AC, const TargetTransformInfo *TTI, - OptimizationRemarkEmitter *ORE, Loop **EpilogueLoop) { +LoopUnrollResult llvm::UnrollAndJamLoop( + Loop *L, unsigned Count, unsigned TripCount, unsigned TripMultiple, + bool UnrollRemainder, LoopInfo *LI, ScalarEvolution *SE, DominatorTree *DT, + AssumptionCache *AC, const TargetTransformInfo *TTI, + OptimizationRemarkEmitter *ORE, LPMUpdater *U, Loop **EpilogueLoop) { // When we enter here we should have already checked that it is safe BasicBlock *Header = L->getHeader(); @@ -605,8 +605,11 @@ llvm::UnrollAndJamLoop(Loop *L, unsigned Count, unsigned TripCount, ++NumUnrolledAndJammed; // Update LoopInfo if the loop is completely removed. - if (CompletelyUnroll) + if (CompletelyUnroll) { + if (U) + U->markLoopAsDeleted(*L, std::string(L->getName())); LI->erase(L); + } #ifndef NDEBUG // We shouldn't have done anything to break loop simplify form or LCSSA. |