forked from OSchip/llvm-project
Fix a few more bugs:
1) Assign stack slots to new temporaries. 2) Don't insert an interval into the return vector more than once. llvm-svn: 54956
This commit is contained in:
parent
3bab3d21f9
commit
a57c57067d
|
@ -1608,7 +1608,7 @@ std::vector<LiveInterval*> LiveIntervals::
|
|||
addIntervalsForSpillsFast(const LiveInterval &li,
|
||||
const MachineLoopInfo *loopInfo,
|
||||
VirtRegMap &vrm, float& SSWeight) {
|
||||
vrm.assignVirt2StackSlot(li.reg);
|
||||
unsigned slot = vrm.assignVirt2StackSlot(li.reg);
|
||||
|
||||
std::vector<LiveInterval*> added;
|
||||
|
||||
|
@ -1631,9 +1631,13 @@ addIntervalsForSpillsFast(const LiveInterval &li,
|
|||
// Create a new virtual register for the spill interval.
|
||||
MachineOperand& MO = RI.getOperand();
|
||||
unsigned NewVReg = 0;
|
||||
bool newInt = false;
|
||||
if (!VRegMap.count(MO.getParent())) {
|
||||
VRegMap[MO.getParent()] = NewVReg = mri_->createVirtualRegister(rc);
|
||||
vrm.grow();
|
||||
vrm.assignVirt2StackSlot(NewVReg, slot);
|
||||
|
||||
newInt = true;
|
||||
} else
|
||||
NewVReg = VRegMap[MO.getParent()];
|
||||
|
||||
|
@ -1667,6 +1671,7 @@ addIntervalsForSpillsFast(const LiveInterval &li,
|
|||
nI.addRange(LR);
|
||||
}
|
||||
|
||||
if (newInt)
|
||||
added.push_back(&nI);
|
||||
|
||||
DOUT << "\t\t\t\tadded new interval: ";
|
||||
|
|
Loading…
Reference in New Issue