diff --git a/include/llvm/CodeGen/LiveIntervalAnalysis.h b/include/llvm/CodeGen/LiveIntervalAnalysis.h index c9f9d2dcc28..6f41ab664c3 100644 --- a/include/llvm/CodeGen/LiveIntervalAnalysis.h +++ b/include/llvm/CodeGen/LiveIntervalAnalysis.h @@ -167,7 +167,7 @@ namespace llvm { /// is live in any MBB returns true as well as the list of basic blocks /// where the value is live in. bool findLiveInMBBs(const LiveRange &LR, - SmallVector &MBBs) const; + SmallVectorImpl &MBBs) const; // Interval creation diff --git a/lib/CodeGen/LiveIntervalAnalysis.cpp b/lib/CodeGen/LiveIntervalAnalysis.cpp index 3aec772f1a9..ca6c04d8f75 100644 --- a/lib/CodeGen/LiveIntervalAnalysis.cpp +++ b/lib/CodeGen/LiveIntervalAnalysis.cpp @@ -817,7 +817,7 @@ void LiveIntervals::computeIntervals() { } bool LiveIntervals::findLiveInMBBs(const LiveRange &LR, - SmallVector &MBBs) const { + SmallVectorImpl &MBBs) const { std::vector::const_iterator I = std::lower_bound(Idx2MBBMap.begin(), Idx2MBBMap.end(), LR.start); diff --git a/lib/CodeGen/RegAllocLinearScan.cpp b/lib/CodeGen/RegAllocLinearScan.cpp index e74f3333d24..8a9eb3de0b5 100644 --- a/lib/CodeGen/RegAllocLinearScan.cpp +++ b/lib/CodeGen/RegAllocLinearScan.cpp @@ -290,6 +290,7 @@ void RALinScan::linearScan() // Add live-ins to every BB except for entry. MachineFunction::iterator EntryMBB = mf_->begin(); + SmallVector LiveInMBBs; for (LiveIntervals::iterator i = li_->begin(), e = li_->end(); i != e; ++i) { const LiveInterval &cur = i->second; unsigned Reg = 0; @@ -302,11 +303,11 @@ void RALinScan::linearScan() for (LiveInterval::Ranges::const_iterator I = cur.begin(), E = cur.end(); I != E; ++I) { const LiveRange &LR = *I; - SmallVector LiveInMBBs; if (li_->findLiveInMBBs(LR, LiveInMBBs)) { for (unsigned i = 0, e = LiveInMBBs.size(); i != e; ++i) if (LiveInMBBs[i] != EntryMBB) LiveInMBBs[i]->addLiveIn(Reg); + LiveInMBBs.clear(); } } }