aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/CodeGen/VirtRegMap.cpp4
-rw-r--r--lib/CodeGen/VirtRegMap.h7
2 files changed, 7 insertions, 4 deletions
diff --git a/lib/CodeGen/VirtRegMap.cpp b/lib/CodeGen/VirtRegMap.cpp
index fa5a6ac8e8..912359d137 100644
--- a/lib/CodeGen/VirtRegMap.cpp
+++ b/lib/CodeGen/VirtRegMap.cpp
@@ -730,6 +730,7 @@ void LocalSpiller::RewriteMBB(MachineBasicBlock &MBB, VirtRegMap &VRM) {
assert(VirtRegMap::isMod && "Can't be modref!");
DEBUG(std::cerr << "Removed dead store:\t" << *MDSI->second);
MBB.erase(MDSI->second);
+ VRM.RemoveFromFoldedVirtMap(MDSI->second);
MaybeDeadStores.erase(MDSI);
++NumDSE;
}
@@ -791,6 +792,7 @@ void LocalSpiller::RewriteMBB(MachineBasicBlock &MBB, VirtRegMap &VRM) {
++NumDCE;
DEBUG(std::cerr << "Removing now-noop copy: " << MI);
MBB.erase(&MI);
+ VRM.RemoveFromFoldedVirtMap(&MI);
goto ProcessNextInst;
}
Spills.ClobberPhysReg(VirtReg);
@@ -825,6 +827,7 @@ void LocalSpiller::RewriteMBB(MachineBasicBlock &MBB, VirtRegMap &VRM) {
++NumDCE;
DEBUG(std::cerr << "Removing now-noop copy: " << MI);
MBB.erase(&MI);
+ VRM.RemoveFromFoldedVirtMap(&MI);
goto ProcessNextInst;
}
}
@@ -835,6 +838,7 @@ void LocalSpiller::RewriteMBB(MachineBasicBlock &MBB, VirtRegMap &VRM) {
DEBUG(std::cerr << "Removed dead store:\t" << *LastStore);
++NumDSE;
MBB.erase(LastStore);
+ VRM.RemoveFromFoldedVirtMap(LastStore);
}
LastStore = next(MII);
diff --git a/lib/CodeGen/VirtRegMap.h b/lib/CodeGen/VirtRegMap.h
index 898677e8f9..83d5aada47 100644
--- a/lib/CodeGen/VirtRegMap.h
+++ b/lib/CodeGen/VirtRegMap.h
@@ -137,11 +137,10 @@ namespace llvm {
return MI2VirtMap.equal_range(MI);
}
- /// RemoveFromFoldedVirtMap - Given a machine instruction in the folded
- /// instruction map, remove the entry in the folded instruction map.
+ /// RemoveFromFoldedVirtMap - If the specified machine instruction is in
+ /// the folded instruction map, remove its entry from the map.
void RemoveFromFoldedVirtMap(MachineInstr *MI) {
- bool ErasedAny = MI2VirtMap.erase(MI);
- assert(ErasedAny && "Machine instr not in folded vreg map!");
+ MI2VirtMap.erase(MI);
}
void print(std::ostream &OS) const;