Author: lattner Date: Sat Aug 4 19:10:08 2007 New Revision: 40828 URL: http://llvm.org/viewvc/llvm-project?rev=40828&view=rev Log: Switch DomTreeNode::assignDFSNumber from using a std::set to using a smallptrset. This speeds up domtree by about 15% and postdomtree by 20%.
Modified: llvm/trunk/lib/VMCore/Dominators.cpp Modified: llvm/trunk/lib/VMCore/Dominators.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Dominators.cpp?rev=40828&r1=40827&r2=40828&view=diff ============================================================================== --- llvm/trunk/lib/VMCore/Dominators.cpp (original) +++ llvm/trunk/lib/VMCore/Dominators.cpp Sat Aug 4 19:10:08 2007 @@ -496,10 +496,10 @@ /// 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 @@ 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 _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits