summaryrefslogtreecommitdiff
path: root/lib/CodeGen/VirtRegMap.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-02-03 03:06:49 +0000
committerChris Lattner <sabre@nondot.org>2006-02-03 03:06:49 +0000
commit84e752a8129e7a02ee6e3c6d356a8fd68fbdf698 (patch)
treefc39cbe56b7a2abd4a19a700bb883f67b2eed903 /lib/CodeGen/VirtRegMap.cpp
parent018c02dd11879770d68f180c0a58531b8dfaa5dd (diff)
downloadllvm-84e752a8129e7a02ee6e3c6d356a8fd68fbdf698.tar.gz
llvm-84e752a8129e7a02ee6e3c6d356a8fd68fbdf698.tar.bz2
llvm-84e752a8129e7a02ee6e3c6d356a8fd68fbdf698.tar.xz
Simplify some code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25924 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/VirtRegMap.cpp')
-rw-r--r--lib/CodeGen/VirtRegMap.cpp85
1 files changed, 40 insertions, 45 deletions
diff --git a/lib/CodeGen/VirtRegMap.cpp b/lib/CodeGen/VirtRegMap.cpp
index 0487890bc9..c64c411d37 100644
--- a/lib/CodeGen/VirtRegMap.cpp
+++ b/lib/CodeGen/VirtRegMap.cpp
@@ -593,7 +593,6 @@ void LocalSpiller::RewriteMBB(MachineBasicBlock &MBB, const VirtRegMap &VRM) {
if (MO.isRegister() && MO.getReg() && MO.isDef()) {
unsigned VirtReg = MO.getReg();
- bool TakenCareOf = false;
if (!MRegisterInfo::isVirtualRegister(VirtReg)) {
// Check to see if this is a def-and-use vreg operand that we do need
// to insert a store for.
@@ -609,54 +608,50 @@ void LocalSpiller::RewriteMBB(MachineBasicBlock &MBB, const VirtRegMap &VRM) {
if (!OpTakenCareOf) {
ClobberPhysReg(VirtReg, SpillSlotsAvailable, PhysRegsAvailable);
- TakenCareOf = true;
+ continue;
}
}
- if (!TakenCareOf) {
- // The only vregs left are stack slot definitions.
- int StackSlot = VRM.getStackSlot(VirtReg);
- const TargetRegisterClass *RC =
- MBB.getParent()->getSSARegMap()->getRegClass(VirtReg);
- unsigned PhysReg;
-
- // If this is a def&use operand, and we used a different physreg for
- // it than the one assigned, make sure to execute the store from the
- // correct physical register.
- if (MO.getReg() == VirtReg)
- PhysReg = VRM.getPhys(VirtReg);
- else
- PhysReg = MO.getReg();
-
- PhysRegsUsed[PhysReg] = true;
- MRI->storeRegToStackSlot(MBB, next(MII), PhysReg, StackSlot, RC);
- DEBUG(std::cerr << "Store:\t" << *next(MII));
- MI.SetMachineOperandReg(i, PhysReg);
-
- // If there is a dead store to this stack slot, nuke it now.
- MachineInstr *&LastStore = MaybeDeadStores[StackSlot];
- if (LastStore) {
- DEBUG(std::cerr << " Killed store:\t" << *LastStore);
- ++NumDSE;
- MBB.erase(LastStore);
- }
- 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.
- ModifyStackSlot(StackSlot, SpillSlotsAvailable, PhysRegsAvailable);
- ClobberPhysReg(PhysReg, SpillSlotsAvailable, PhysRegsAvailable);
-
- PhysRegsAvailable.insert(std::make_pair(PhysReg, StackSlot));
- SpillSlotsAvailable[StackSlot] = PhysReg;
- DEBUG(std::cerr << "Updating SS#" << StackSlot <<" in physreg "
- << MRI->getName(PhysReg) << " for virtreg #"
- << VirtReg << "\n");
-
- ++NumStores;
- VirtReg = PhysReg;
+ // The only vregs left are stack slot definitions.
+ int StackSlot = VRM.getStackSlot(VirtReg);
+ const TargetRegisterClass *RC =
+ MBB.getParent()->getSSARegMap()->getRegClass(VirtReg);
+ unsigned PhysReg;
+
+ // If this is a def&use operand, and we used a different physreg for
+ // it than the one assigned, make sure to execute the store from the
+ // correct physical register.
+ if (MO.getReg() == VirtReg)
+ PhysReg = VRM.getPhys(VirtReg);
+ else
+ PhysReg = MO.getReg();
+
+ PhysRegsUsed[PhysReg] = true;
+ MRI->storeRegToStackSlot(MBB, next(MII), PhysReg, StackSlot, RC);
+ DEBUG(std::cerr << "Store:\t" << *next(MII));
+ MI.SetMachineOperandReg(i, PhysReg);
+
+ // If there is a dead store to this stack slot, nuke it now.
+ MachineInstr *&LastStore = MaybeDeadStores[StackSlot];
+ if (LastStore) {
+ DEBUG(std::cerr << " Killed store:\t" << *LastStore);
+ ++NumDSE;
+ MBB.erase(LastStore);
}
+ 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.
+ ModifyStackSlot(StackSlot, SpillSlotsAvailable, PhysRegsAvailable);
+ ClobberPhysReg(PhysReg, SpillSlotsAvailable, PhysRegsAvailable);
+
+ PhysRegsAvailable.insert(std::make_pair(PhysReg, StackSlot));
+ SpillSlotsAvailable[StackSlot] = PhysReg;
+ DEBUG(std::cerr << "Updating SS#" << StackSlot <<" in physreg "
+ << MRI->getName(PhysReg) << " for virtreg #"
+ << VirtReg << "\n");
+ ++NumStores;
}
}