aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/VirtRegMap.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/CodeGen/VirtRegMap.cpp')
-rw-r--r--lib/CodeGen/VirtRegMap.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/CodeGen/VirtRegMap.cpp b/lib/CodeGen/VirtRegMap.cpp
index 0c5fcc5a93..144780129d 100644
--- a/lib/CodeGen/VirtRegMap.cpp
+++ b/lib/CodeGen/VirtRegMap.cpp
@@ -419,8 +419,12 @@ namespace {
// register.
if (Op.PhysRegReused == PhysReg) {
// Yup, use the reload register that we didn't use before.
- return GetRegForReload(Op.AssignedPhysReg, MI,
- Spills, MaybeDeadStores);
+ unsigned NewReg = Op.AssignedPhysReg;
+
+ // Remove the record for the previous reuse. We know it can never be
+ // invalidated now.
+ Reuses.erase(Reuses.begin()+ro);
+ return GetRegForReload(NewReg, MI, Spills, MaybeDeadStores);
} else {
// Otherwise, we might also have a problem if a previously reused
// value aliases the new register. If so, codegen the previous reload
@@ -487,9 +491,6 @@ void LocalSpiller::RewriteMBB(MachineBasicBlock &MBB, const VirtRegMap &VRM) {
bool *PhysRegsUsed = MBB.getParent()->getUsedPhysregs();
- if (MBB.getBasicBlock()->getName() == "endif.3.i")
- std::cerr << "HERE\n";
-
for (MachineBasicBlock::iterator MII = MBB.begin(), E = MBB.end();
MII != E; ) {
MachineInstr &MI = *MII;