mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 04:30:12 +00:00
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54956 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
cd7ab05c37
commit
1719731d3d
@ -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()];
|
||||
|
||||
@ -1666,8 +1670,9 @@ addIntervalsForSpillsFast(const LiveInterval &li,
|
||||
DOUT << " +" << LR;
|
||||
nI.addRange(LR);
|
||||
}
|
||||
|
||||
added.push_back(&nI);
|
||||
|
||||
if (newInt)
|
||||
added.push_back(&nI);
|
||||
|
||||
DOUT << "\t\t\t\tadded new interval: ";
|
||||
DEBUG(nI.dump());
|
||||
|
Loading…
Reference in New Issue
Block a user