[llvm-commits] [llvm] r40828 - /llvm/trunk/lib/VMCore/Dominators.cpp
Chris Lattner
sabre at nondot.org
Sat Aug 4 17:10:08 PDT 2007
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
More information about the llvm-commits
mailing list