From: Chris Lattner Date: Sun, 5 Aug 2007 00:10:08 +0000 (+0000) Subject: Switch DomTreeNode::assignDFSNumber from using a std::set to using X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=7ae8c4c810935625bcdbdf832a33ef4032bad906;p=oota-llvm.git Switch DomTreeNode::assignDFSNumber from using a std::set to using a smallptrset. This speeds up domtree by about 15% and postdomtree by 20%. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40828 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/VMCore/Dominators.cpp b/lib/VMCore/Dominators.cpp index bb780c505d7..6231eb8e469 100644 --- a/lib/VMCore/Dominators.cpp +++ b/lib/VMCore/Dominators.cpp @@ -496,10 +496,10 @@ BasicBlock *DominatorTreeBase::findNearestCommonDominator(BasicBlock *A, /// in dfs order. void DomTreeNode::assignDFSNumber(int num) { std::vector workStack; - std::set visitedNodes; + SmallPtrSet 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::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