summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2007-02-04 00:27:56 +0000
committerChris Lattner <sabre@nondot.org>2007-02-04 00:27:56 +0000
commit00755df36c1448ac4728a74d907aa09e3d8b2d49 (patch)
treee35b3741f7a34d62fc58b65c1d0a789d5548a22b /lib
parentd48c5e871a0f3386e536e0987ca06dbc4e274acf (diff)
downloadllvm-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.cpp9
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) {