switch RegsForValue::Regs to be a SmallVector to avoid
authorChris Lattner <sabre@nondot.org>
Mon, 28 Apr 2008 06:02:19 +0000 (06:02 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 28 Apr 2008 06:02:19 +0000 (06:02 +0000)
heap thrash on tiny (usually single-element) vectors.

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

lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp

index d82f0d613a2dbe415568f6197f97adee39eadb8a..507b2d731a38947f68779919a705bd42f1bea45d 100644 (file)
@@ -125,7 +125,7 @@ namespace {
     /// Regs - This list holds the register (for legal and promoted values)
     /// or register set (for expanded values) that the value should be assigned
     /// to.
-    std::vector<unsigned> Regs;
+    SmallVector<unsigned, 4> Regs;
     
     /// RegVTs - The value types of the registers. This is the same size
     /// as ValueVTs; every register contributing to a given value must
@@ -146,11 +146,11 @@ namespace {
                  unsigned Reg, MVT::ValueType regvt, MVT::ValueType valuevt)
       : TLI(&tli), Regs(1, Reg), RegVTs(1, regvt), ValueVTs(1, valuevt) {}
     RegsForValue(const TargetLowering &tli,
-                 const std::vector<unsigned> &regs, 
+                 const SmallVectorImpl<unsigned> &regs, 
                  MVT::ValueType regvt, MVT::ValueType valuevt)
       : TLI(&tli), Regs(regs), RegVTs(1, regvt), ValueVTs(1, valuevt) {}
     RegsForValue(const TargetLowering &tli,
-                 const std::vector<unsigned> &regs, 
+                 const SmallVectorImpl<unsigned> &regs, 
                  const SmallVector<MVT::ValueType, 4> &regvts,
                  const SmallVector<MVT::ValueType, 4> &valuevts)
       : TLI(&tli), Regs(regs), RegVTs(regvts), ValueVTs(valuevts) {}
@@ -3600,7 +3600,7 @@ GetRegistersForValue(SDISelAsmOperandInfo &OpInfo, bool HasEarlyClobber,
   
   
   MachineFunction &MF = DAG.getMachineFunction();
-  std::vector<unsigned> Regs;
+  SmallVector<unsigned, 8> Regs;
   
   // If this is a constraint for a single physreg, or a constraint for a
   // register class, find it.