mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-12 07:37:34 +00:00
Add support for regmask slots to HMEditor. Also fixes a comment error.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150840 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d9165eb02f
commit
fbc8dd306a
@ -1069,7 +1069,6 @@ public:
|
||||
assert(intervalRangesSane(li) && "Broke live interval moving use.");
|
||||
}
|
||||
|
||||
// Returns the new
|
||||
void moveUseUp(SlotIndex oldIdx, LiveRange& lr, LiveInterval& li) {
|
||||
bool liveThrough = lr.end > oldIdx.getRegSlot();
|
||||
if (liveThrough)
|
||||
@ -1098,7 +1097,7 @@ public:
|
||||
}
|
||||
|
||||
// Update intervals for all operands of mi from oldIndex to newIndex.
|
||||
void moveAllOperands(MachineInstr* mi, SlotIndex oldIdx) {
|
||||
void moveAllOperandsFrom(MachineInstr* mi, SlotIndex oldIdx) {
|
||||
// Figure out the direction we're moving.
|
||||
bool movingUp = newIdx < oldIdx;
|
||||
|
||||
@ -1109,6 +1108,11 @@ public:
|
||||
mopItr != mopEnd; ++mopItr) {
|
||||
const MachineOperand& mop = *mopItr;
|
||||
|
||||
if (mop.isRegMask()) {
|
||||
updateRegMaskSlots(oldIdx);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!mop.isReg() || mop.getReg() == 0)
|
||||
continue;
|
||||
|
||||
@ -1249,6 +1253,16 @@ private:
|
||||
moveUseDown(oldIdx, *lr, li, mbb);
|
||||
}
|
||||
}
|
||||
|
||||
void updateRegMaskSlots(SlotIndex oldIdx) {
|
||||
SmallVectorImpl<SlotIndex>::iterator rmItr =
|
||||
std::lower_bound(lis.RegMaskSlots.begin(), lis.RegMaskSlots.end(),
|
||||
oldIdx);
|
||||
assert(*rmItr == oldIdx && "No RegMask at oldIdx.");
|
||||
*rmItr = newIdx;
|
||||
assert(*prior(rmItr) < *rmItr && *rmItr < *next(rmItr) &&
|
||||
"RegSlots out of order. Did you move one call across another?");
|
||||
}
|
||||
};
|
||||
|
||||
void LiveIntervals::handleMove(MachineInstr* mi) {
|
||||
@ -1263,5 +1277,5 @@ void LiveIntervals::handleMove(MachineInstr* mi) {
|
||||
assert(!mi->isBundled() && "Can't handle bundled instructions yet.");
|
||||
|
||||
HMEditor hme(*this, newIndex);
|
||||
hme.moveAllOperands(mi, oldIndex);
|
||||
hme.moveAllOperandsFrom(mi, oldIndex);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user