diff options
author | Chandler Carruth <chandlerc@gmail.com> | 2015-01-17 14:16:18 +0000 |
---|---|---|
committer | Chandler Carruth <chandlerc@gmail.com> | 2015-01-17 14:16:18 +0000 |
commit | 4f8f307c77fa5b4de2eec8868b8734b2ab93dd22 (patch) | |
tree | 5c9be8d4edf8e4e9c5cabcde80b0ce461f5d6254 /llvm/lib/Transforms/Utils/BasicBlockUtils.cpp | |
parent | 74e7fb9aaeb1b21cfb26cbaf0352ba6b5f9fb272 (diff) | |
download | llvm-4f8f307c77fa5b4de2eec8868b8734b2ab93dd22.zip llvm-4f8f307c77fa5b4de2eec8868b8734b2ab93dd22.tar.gz llvm-4f8f307c77fa5b4de2eec8868b8734b2ab93dd22.tar.bz2 |
[PM] Split the LoopInfo object apart from the legacy pass, creating
a LoopInfoWrapperPass to wire the object up to the legacy pass manager.
This switches all the clients of LoopInfo over and paves the way to port
LoopInfo to the new pass manager. No functionality change is intended
with this iteration.
llvm-svn: 226373
Diffstat (limited to 'llvm/lib/Transforms/Utils/BasicBlockUtils.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/BasicBlockUtils.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp index 983f025..a6c9d9a 100644 --- a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp +++ b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp @@ -180,8 +180,8 @@ bool llvm::MergeBlockIntoPredecessor(BasicBlock *BB, Pass *P) { DT.eraseNode(BB); } - if (LoopInfo *LI = P->getAnalysisIfAvailable<LoopInfo>()) - LI->removeBlock(BB); + if (auto *LIWP = P->getAnalysisIfAvailable<LoopInfoWrapperPass>()) + LIWP->getLoopInfo().removeBlock(BB); if (MemoryDependenceAnalysis *MD = P->getAnalysisIfAvailable<MemoryDependenceAnalysis>()) @@ -290,9 +290,11 @@ BasicBlock *llvm::SplitBlock(BasicBlock *Old, Instruction *SplitPt, Pass *P) { // The new block lives in whichever loop the old one did. This preserves // LCSSA as well, because we force the split point to be after any PHI nodes. - if (LoopInfo *LI = P->getAnalysisIfAvailable<LoopInfo>()) - if (Loop *L = LI->getLoopFor(Old)) - L->addBasicBlockToLoop(New, LI->getBase()); + if (auto *LIWP = P->getAnalysisIfAvailable<LoopInfoWrapperPass>()) { + LoopInfo &LI = LIWP->getLoopInfo(); + if (Loop *L = LI.getLoopFor(Old)) + L->addBasicBlockToLoop(New, LI.getBase()); + } if (DominatorTreeWrapperPass *DTWP = P->getAnalysisIfAvailable<DominatorTreeWrapperPass>()) { @@ -321,7 +323,8 @@ static void UpdateAnalysisInformation(BasicBlock *OldBB, BasicBlock *NewBB, Pass *P, bool &HasLoopExit) { if (!P) return; - LoopInfo *LI = P->getAnalysisIfAvailable<LoopInfo>(); + auto *LIWP = P->getAnalysisIfAvailable<LoopInfoWrapperPass>(); + LoopInfo *LI = LIWP ? &LIWP->getLoopInfo() : nullptr; Loop *L = LI ? LI->getLoopFor(OldBB) : nullptr; // If we need to preserve loop analyses, collect some information about how |