From 72d1695f12b29dddac431f18e2592a8eeaf3796a Mon Sep 17 00:00:00 2001 From: Cameron Zwarich Date: Tue, 18 Jan 2011 04:21:57 +0000 Subject: Remove some now-unused DominanceFrontier methods. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123726 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/VMCore/Dominators.cpp | 124 ---------------------------------------------- 1 file changed, 124 deletions(-) (limited to 'lib/VMCore/Dominators.cpp') diff --git a/lib/VMCore/Dominators.cpp b/lib/VMCore/Dominators.cpp index 2f080d3c55..6e58985ba1 100644 --- a/lib/VMCore/Dominators.cpp +++ b/lib/VMCore/Dominators.cpp @@ -131,130 +131,6 @@ void DominanceFrontier::verifyAnalysis() const { assert(!compare(OtherDF) && "Invalid DominanceFrontier info!"); } -// NewBB is split and now it has one successor. Update dominance frontier to -// reflect this change. -void DominanceFrontier::splitBlock(BasicBlock *NewBB) { - assert(NewBB->getTerminator()->getNumSuccessors() == 1 && - "NewBB should have a single successor!"); - BasicBlock *NewBBSucc = NewBB->getTerminator()->getSuccessor(0); - - // NewBBSucc inherits original NewBB frontier. - DominanceFrontier::iterator NewBBI = find(NewBB); - if (NewBBI != end()) - addBasicBlock(NewBBSucc, NewBBI->second); - - // If NewBB dominates NewBBSucc, then DF(NewBB) is now going to be the - // DF(NewBBSucc) without the stuff that the new block does not dominate - // a predecessor of. - DominatorTree &DT = getAnalysis(); - DomTreeNode *NewBBNode = DT.getNode(NewBB); - DomTreeNode *NewBBSuccNode = DT.getNode(NewBBSucc); - if (DT.dominates(NewBBNode, NewBBSuccNode)) { - DominanceFrontier::iterator DFI = find(NewBBSucc); - if (DFI != end()) { - DominanceFrontier::DomSetType Set = DFI->second; - // Filter out stuff in Set that we do not dominate a predecessor of. - for (DominanceFrontier::DomSetType::iterator SetI = Set.begin(), - E = Set.end(); SetI != E;) { - bool DominatesPred = false; - for (pred_iterator PI = pred_begin(*SetI), E = pred_end(*SetI); - PI != E; ++PI) - if (DT.dominates(NewBBNode, DT.getNode(*PI))) { - DominatesPred = true; - break; - } - if (!DominatesPred) - Set.erase(SetI++); - else - ++SetI; - } - - if (NewBBI != end()) { - for (DominanceFrontier::DomSetType::iterator SetI = Set.begin(), - E = Set.end(); SetI != E; ++SetI) { - BasicBlock *SB = *SetI; - addToFrontier(NewBBI, SB); - } - } else - addBasicBlock(NewBB, Set); - } - - } else { - // DF(NewBB) is {NewBBSucc} because NewBB does not strictly dominate - // NewBBSucc, but it does dominate itself (and there is an edge (NewBB -> - // NewBBSucc)). NewBBSucc is the single successor of NewBB. - DominanceFrontier::DomSetType NewDFSet; - NewDFSet.insert(NewBBSucc); - addBasicBlock(NewBB, NewDFSet); - } - - // Now update dominance frontiers which either used to contain NewBBSucc - // or which now need to include NewBB. - - // Collect the set of blocks which dominate a predecessor of NewBB or - // NewSuccBB and which don't dominate both. This is an initial - // approximation of the blocks whose dominance frontiers will need updates. - SmallVector AllPredDoms; - - // Compute the block which dominates both NewBBSucc and NewBB. This is - // the immediate dominator of NewBBSucc unless NewBB dominates NewBBSucc. - // The code below which climbs dominator trees will stop at this point, - // because from this point up, dominance frontiers are unaffected. - DomTreeNode *DominatesBoth = 0; - if (NewBBSuccNode) { - DominatesBoth = NewBBSuccNode->getIDom(); - if (DominatesBoth == NewBBNode) - DominatesBoth = NewBBNode->getIDom(); - } - - // Collect the set of all blocks which dominate a predecessor of NewBB. - SmallPtrSet NewBBPredDoms; - for (pred_iterator PI = pred_begin(NewBB), E = pred_end(NewBB); PI != E; ++PI) - for (DomTreeNode *DTN = DT.getNode(*PI); DTN; DTN = DTN->getIDom()) { - if (DTN == DominatesBoth) - break; - if (!NewBBPredDoms.insert(DTN)) - break; - AllPredDoms.push_back(DTN); - } - - // Collect the set of all blocks which dominate a predecessor of NewSuccBB. - SmallPtrSet NewBBSuccPredDoms; - for (pred_iterator PI = pred_begin(NewBBSucc), - E = pred_end(NewBBSucc); PI != E; ++PI) - for (DomTreeNode *DTN = DT.getNode(*PI); DTN; DTN = DTN->getIDom()) { - if (DTN == DominatesBoth) - break; - if (!NewBBSuccPredDoms.insert(DTN)) - break; - if (!NewBBPredDoms.count(DTN)) - AllPredDoms.push_back(DTN); - } - - // Visit all relevant dominance frontiers and make any needed updates. - for (SmallVectorImpl::const_iterator I = AllPredDoms.begin(), - E = AllPredDoms.end(); I != E; ++I) { - DomTreeNode *DTN = *I; - iterator DFI = find((*I)->getBlock()); - - // Only consider nodes that have NewBBSucc in their dominator frontier. - if (DFI == end() || !DFI->second.count(NewBBSucc)) continue; - - // If the block dominates a predecessor of NewBB but does not properly - // dominate NewBB itself, add NewBB to its dominance frontier. - if (NewBBPredDoms.count(DTN) && - !DT.properlyDominates(DTN, NewBBNode)) - addToFrontier(DFI, NewBB); - - // If the block does not dominate a predecessor of NewBBSucc or - // properly dominates NewBBSucc itself, remove NewBBSucc from its - // dominance frontier. - if (!NewBBSuccPredDoms.count(DTN) || - DT.properlyDominates(DTN, NewBBSuccNode)) - removeFromFrontier(DFI, NewBBSucc); - } -} - namespace { class DFCalculateWorkObject { public: -- cgit v1.2.3