Eliminate some malloc traffic from LegalizeAllNodesNotLeadingTo, speeding
authorChris Lattner <sabre@nondot.org>
Sun, 4 Feb 2007 00:27:56 +0000 (00:27 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 4 Feb 2007 00:27:56 +0000 (00:27 +0000)
up isel on kimwitu by 0.7%.

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

lib/CodeGen/SelectionDAG/LegalizeDAG.cpp

index 22edbf320e7e7935536e7886ab76cd3adb8234e4..e87dfa615c552ffb3182c7bf6b512a85c8be7c52 100644 (file)
@@ -27,6 +27,7 @@
 #include "llvm/Support/Compiler.h"
 #include "llvm/ADT/DenseMap.h"
 #include "llvm/ADT/SmallVector.h"
+#include "llvm/ADT/SmallPtrSet.h"
 #include <map>
 using namespace llvm;
 
@@ -182,7 +183,7 @@ private:
   SDNode *isShuffleLegal(MVT::ValueType VT, SDOperand Mask) const;
   
   bool LegalizeAllNodesNotLeadingTo(SDNode *N, SDNode *Dest,
-                                    std::set<SDNode*> &NodesLeadingTo);
+                                    SmallPtrSet<SDNode*, 32> &NodesLeadingTo);
 
   void LegalizeSetCCOperands(SDOperand &LHS, SDOperand &RHS, SDOperand &CC);
     
@@ -416,7 +417,7 @@ static SDNode *FindCallStartFromCallEnd(SDNode *Node) {
 /// NodesLeadingTo.  This avoids retraversing them exponential number of times.
 ///
 bool SelectionDAGLegalize::LegalizeAllNodesNotLeadingTo(SDNode *N, SDNode *Dest,
-                                            std::set<SDNode*> &NodesLeadingTo) {
+                                     SmallPtrSet<SDNode*, 32> &NodesLeadingTo) {
   if (N == Dest) return true;  // N certainly leads to Dest :)
   
   // If we've already processed this node and it does lead to Dest, there is no
@@ -1119,7 +1120,7 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) {
     // Recursively Legalize all of the inputs of the call end that do not lead
     // to this call start.  This ensures that any libcalls that need be inserted
     // are inserted *before* the CALLSEQ_START.
-    {std::set<SDNode*> NodesLeadingTo;
+    {SmallPtrSet<SDNode*, 32> NodesLeadingTo;
     for (unsigned i = 0, e = CallEnd->getNumOperands(); i != e; ++i)
       LegalizeAllNodesNotLeadingTo(CallEnd->getOperand(i).Val, Node,
                                    NodesLeadingTo);
@@ -2072,7 +2073,7 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) {
       // Allow SETCC to not be supported for all legal data types
       // Mostly this targets FP
       MVT::ValueType NewInTy = Node->getOperand(0).getValueType();
-      MVT::ValueType OldVT = NewInTy;
+      MVT::ValueType OldVT = NewInTy; OldVT = OldVT;
 
       // Scan for the appropriate larger type to use.
       while (1) {