Switch ComputeTopDownOrdering over to using a densemap. This speeds up
authorChris Lattner <sabre@nondot.org>
Sat, 3 Feb 2007 01:12:36 +0000 (01:12 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 3 Feb 2007 01:12:36 +0000 (01:12 +0000)
isel as a whole by 3.3%.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33809 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/LegalizeDAG.cpp

index 6aa13607644ebdbce046c01f3c55458c4e6cc41b..22edbf320e7e7935536e7886ab76cd3adb8234e4 100644 (file)
@@ -25,6 +25,7 @@
 #include "llvm/Support/MathExtras.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/Compiler.h"
+#include "llvm/ADT/DenseMap.h"
 #include "llvm/ADT/SmallVector.h"
 #include <map>
 using namespace llvm;
@@ -290,7 +291,7 @@ SelectionDAGLegalize::SelectionDAGLegalize(SelectionDAG &dag)
 /// ComputeTopDownOrdering - Add the specified node to the Order list if it has
 /// not been visited yet and if all of its operands have already been visited.
 static void ComputeTopDownOrdering(SDNode *N, std::vector<SDNode*> &Order,
-                                   std::map<SDNode*, unsigned> &Visited) {
+                                   DenseMap<SDNode*, unsigned> &Visited) {
   if (++Visited[N] != N->getNumOperands())
     return;  // Haven't visited all operands yet
   
@@ -318,7 +319,7 @@ void SelectionDAGLegalize::LegalizeDAG() {
   // practice however, this causes us to run out of stack space on large basic
   // blocks.  To avoid this problem, compute an ordering of the nodes where each
   // node is only legalized after all of its operands are legalized.
-  std::map<SDNode*, unsigned> Visited;
+  DenseMap<SDNode*, unsigned> Visited;
   std::vector<SDNode*> Order;
   
   // Compute ordering from all of the leaves in the graphs, those (like the