[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