/// 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<MachineBasicBlock*, 4> &MBBs) const;
+ SmallVectorImpl<MachineBasicBlock*> &MBBs) const;
// Interval creation
}
bool LiveIntervals::findLiveInMBBs(const LiveRange &LR,
- SmallVector<MachineBasicBlock*, 4> &MBBs) const {
+ SmallVectorImpl<MachineBasicBlock*> &MBBs) const {
std::vector<IdxMBBPair>::const_iterator I =
std::lower_bound(Idx2MBBMap.begin(), Idx2MBBMap.end(), LR.start);
// Add live-ins to every BB except for entry.
MachineFunction::iterator EntryMBB = mf_->begin();
+ SmallVector<MachineBasicBlock*, 8> LiveInMBBs;
for (LiveIntervals::iterator i = li_->begin(), e = li_->end(); i != e; ++i) {
const LiveInterval &cur = i->second;
unsigned Reg = 0;
for (LiveInterval::Ranges::const_iterator I = cur.begin(), E = cur.end();
I != E; ++I) {
const LiveRange &LR = *I;
- SmallVector<MachineBasicBlock*, 4> 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();
}
}
}