diff options
author | Chris Lattner <sabre@nondot.org> | 2007-02-04 00:27:56 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-02-04 00:27:56 +0000 |
commit | 00755df36c1448ac4728a74d907aa09e3d8b2d49 (patch) | |
tree | e35b3741f7a34d62fc58b65c1d0a789d5548a22b /lib | |
parent | d48c5e871a0f3386e536e0987ca06dbc4e274acf (diff) | |
download | llvm-00755df36c1448ac4728a74d907aa09e3d8b2d49.tar.gz llvm-00755df36c1448ac4728a74d907aa09e3d8b2d49.tar.bz2 llvm-00755df36c1448ac4728a74d907aa09e3d8b2d49.tar.xz |
Eliminate some malloc traffic from LegalizeAllNodesNotLeadingTo, speeding
up isel on kimwitu by 0.7%.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33853 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/CodeGen/SelectionDAG/LegalizeDAG.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp index 22edbf320e..e87dfa615c 100644 --- a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp +++ b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp @@ -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) { |