diff options
author | Chris Lattner <sabre@nondot.org> | 2007-08-05 00:10:08 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-08-05 00:10:08 +0000 |
commit | 5f5585c432dad100de00b0659341960966facf06 (patch) | |
tree | 47dbb3f14bff7ee75208bc3469e7ee482495b2f6 /llvm/lib/VMCore/Dominators.cpp | |
parent | 77e05fe20de9870f183709235e76516bf907eeed (diff) | |
download | bcm5719-llvm-5f5585c432dad100de00b0659341960966facf06.tar.gz bcm5719-llvm-5f5585c432dad100de00b0659341960966facf06.zip |
Switch DomTreeNode::assignDFSNumber from using a std::set to using
a smallptrset. This speeds up domtree by about 15% and postdomtree by 20%.
llvm-svn: 40828
Diffstat (limited to 'llvm/lib/VMCore/Dominators.cpp')
-rw-r--r-- | llvm/lib/VMCore/Dominators.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/llvm/lib/VMCore/Dominators.cpp b/llvm/lib/VMCore/Dominators.cpp index bb780c505d7..6231eb8e469 100644 --- a/llvm/lib/VMCore/Dominators.cpp +++ b/llvm/lib/VMCore/Dominators.cpp @@ -496,10 +496,10 @@ BasicBlock *DominatorTreeBase::findNearestCommonDominator(BasicBlock *A, /// in dfs order. void DomTreeNode::assignDFSNumber(int num) { std::vector<DomTreeNode *> workStack; - std::set<DomTreeNode *> visitedNodes; + SmallPtrSet<DomTreeNode *, 32> Visited; workStack.push_back(this); - visitedNodes.insert(this); + Visited.insert(this); this->DFSNumIn = num++; while (!workStack.empty()) { @@ -509,12 +509,12 @@ void DomTreeNode::assignDFSNumber(int num) { for (std::vector<DomTreeNode*>::iterator DI = Node->begin(), E = Node->end(); DI != E && !visitChild; ++DI) { DomTreeNode *Child = *DI; - if (visitedNodes.count(Child) == 0) { - visitChild = true; - Child->DFSNumIn = num++; - workStack.push_back(Child); - visitedNodes.insert(Child); - } + if (!Visited.insert(Child)) + continue; + + visitChild = true; + Child->DFSNumIn = num++; + workStack.push_back(Child); } if (!visitChild) { // If we reach here means all children are visited |