mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-08 21:32:39 +00:00
Bug fixes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44549 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
516276edd4
commit
e4b39007c9
@ -276,7 +276,7 @@ namespace {
|
||||
SmallSet<MachineInstr*, 4> &ReMatDefs,
|
||||
BitVector &RegKills,
|
||||
std::vector<MachineOperand*> &KillOps,
|
||||
VirtRegMap &VRM, bool StoreMaybeDead);
|
||||
VirtRegMap &VRM);
|
||||
void RewriteMBB(MachineBasicBlock &MBB, VirtRegMap &VRM);
|
||||
};
|
||||
}
|
||||
@ -860,7 +860,7 @@ void LocalSpiller::SpillRegToStackSlot(MachineBasicBlock &MBB,
|
||||
SmallSet<MachineInstr*, 4> &ReMatDefs,
|
||||
BitVector &RegKills,
|
||||
std::vector<MachineOperand*> &KillOps,
|
||||
VirtRegMap &VRM, bool StoreMaybeDead) {
|
||||
VirtRegMap &VRM) {
|
||||
MRI->storeRegToStackSlot(MBB, next(MII), PhysReg, StackSlot, RC);
|
||||
DOUT << "Store:\t" << *next(MII);
|
||||
|
||||
@ -896,15 +896,14 @@ void LocalSpiller::SpillRegToStackSlot(MachineBasicBlock &MBB,
|
||||
}
|
||||
}
|
||||
|
||||
MachineInstr *NewStore = next(MII);
|
||||
LastStore = StoreMaybeDead ? NewStore : NULL;
|
||||
LastStore = next(MII);
|
||||
|
||||
// If the stack slot value was previously available in some other
|
||||
// register, change it now. Otherwise, make the register available,
|
||||
// in PhysReg.
|
||||
Spills.ModifyStackSlotOrReMat(StackSlot);
|
||||
Spills.ClobberPhysReg(PhysReg);
|
||||
Spills.addAvailable(StackSlot, NewStore, PhysReg);
|
||||
Spills.addAvailable(StackSlot, LastStore, PhysReg);
|
||||
++NumStores;
|
||||
}
|
||||
|
||||
@ -987,8 +986,9 @@ void LocalSpiller::RewriteMBB(MachineBasicBlock &MBB, VirtRegMap &VRM) {
|
||||
int StackSlot = VRM.getStackSlot(VirtReg);
|
||||
MachineInstr *&LastStore = MaybeDeadStores[StackSlot];
|
||||
SpillRegToStackSlot(MBB, MII, i, Phys, StackSlot, RC, LastStore,
|
||||
Spills, ReMatDefs, RegKills, KillOps, VRM, false);
|
||||
Spills, ReMatDefs, RegKills, KillOps, VRM);
|
||||
}
|
||||
NextMII = next(MII);
|
||||
}
|
||||
|
||||
/// ReusedOperands - Keep track of operand reuse in case we need to undo
|
||||
@ -1447,7 +1447,8 @@ void LocalSpiller::RewriteMBB(MachineBasicBlock &MBB, VirtRegMap &VRM) {
|
||||
if (!MO.isDead()) {
|
||||
MachineInstr *&LastStore = MaybeDeadStores[StackSlot];
|
||||
SpillRegToStackSlot(MBB, MII, -1, PhysReg, StackSlot, RC, LastStore,
|
||||
Spills, ReMatDefs, RegKills, KillOps, VRM, true);
|
||||
Spills, ReMatDefs, RegKills, KillOps, VRM);
|
||||
NextMII = next(MII);
|
||||
|
||||
// Check to see if this is a noop copy. If so, eliminate the
|
||||
// instruction before considering the dest reg to be changed.
|
||||
|
Loading…
x
Reference in New Issue
Block a user