diff options
author | Jush Lu <jush.msn@gmail.com> | 2011-03-09 19:39:16 +0800 |
---|---|---|
committer | Jush Lu <jush.msn@gmail.com> | 2011-03-09 19:39:16 +0800 |
commit | b5530586d68bd25831a6796b5d3199cb0769a35c (patch) | |
tree | fac4a03b53b6a64b0c00f433e4d8b3c9f2bc67cd /lib/Transforms/Utils/CloneLoop.cpp | |
parent | b4e17c5bf4361bbdeced39aa071150d7fa9c3c10 (diff) | |
parent | d01f50f42ce60207ed6d27fb1778e456d83be06c (diff) | |
download | external_llvm-b5530586d68bd25831a6796b5d3199cb0769a35c.zip external_llvm-b5530586d68bd25831a6796b5d3199cb0769a35c.tar.gz external_llvm-b5530586d68bd25831a6796b5d3199cb0769a35c.tar.bz2 |
Merge upstream r127116
Diffstat (limited to 'lib/Transforms/Utils/CloneLoop.cpp')
-rw-r--r-- | lib/Transforms/Utils/CloneLoop.cpp | 35 |
1 files changed, 6 insertions, 29 deletions
diff --git a/lib/Transforms/Utils/CloneLoop.cpp b/lib/Transforms/Utils/CloneLoop.cpp index ba8f3d5..87dd141 100644 --- a/lib/Transforms/Utils/CloneLoop.cpp +++ b/lib/Transforms/Utils/CloneLoop.cpp @@ -19,12 +19,11 @@ using namespace llvm; -/// CloneDominatorInfo - Clone basicblock's dominator tree and, if available, -/// dominance info. It is expected that basic block is already cloned. +/// CloneDominatorInfo - Clone a basic block's dominator tree. It is expected +/// that the basic block is already cloned. static void CloneDominatorInfo(BasicBlock *BB, ValueToValueMapTy &VMap, - DominatorTree *DT, - DominanceFrontier *DF) { + DominatorTree *DT) { assert (DT && "DominatorTree is not available"); ValueToValueMapTy::iterator BI = VMap.find(BB); @@ -46,28 +45,9 @@ static void CloneDominatorInfo(BasicBlock *BB, if (BBDomI != VMap.end()) { NewBBDom = cast<BasicBlock>(BBDomI->second); if (!DT->getNode(NewBBDom)) - CloneDominatorInfo(BBDom, VMap, DT, DF); + CloneDominatorInfo(BBDom, VMap, DT); } DT->addNewBlock(NewBB, NewBBDom); - - // Copy cloned dominance frontiner set - if (DF) { - DominanceFrontier::DomSetType NewDFSet; - DominanceFrontier::iterator DFI = DF->find(BB); - if ( DFI != DF->end()) { - DominanceFrontier::DomSetType S = DFI->second; - for (DominanceFrontier::DomSetType::iterator I = S.begin(), E = S.end(); - I != E; ++I) { - BasicBlock *DB = *I; - ValueToValueMapTy::iterator IDM = VMap.find(DB); - if (IDM != VMap.end()) - NewDFSet.insert(cast<BasicBlock>(IDM->second)); - else - NewDFSet.insert(DB); - } - } - DF->addBasicBlock(NewBB, NewDFSet); - } } /// CloneLoop - Clone Loop. Clone dominator info. Populate VMap @@ -76,11 +56,8 @@ Loop *llvm::CloneLoop(Loop *OrigL, LPPassManager *LPM, LoopInfo *LI, ValueToValueMapTy &VMap, Pass *P) { DominatorTree *DT = NULL; - DominanceFrontier *DF = NULL; - if (P) { + if (P) DT = P->getAnalysisIfAvailable<DominatorTree>(); - DF = P->getAnalysisIfAvailable<DominanceFrontier>(); - } SmallVector<BasicBlock *, 16> NewBlocks; @@ -116,7 +93,7 @@ Loop *llvm::CloneLoop(Loop *OrigL, LPPassManager *LPM, LoopInfo *LI, for (Loop::block_iterator I = L->block_begin(), E = L->block_end(); I != E; ++I) { BasicBlock *BB = *I; - CloneDominatorInfo(BB, VMap, DT, DF); + CloneDominatorInfo(BB, VMap, DT); } // Process sub loops |