summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2011-03-16 22:56:13 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2011-03-16 22:56:13 +0000
commitc738c9651925e67ea3153bb651eebb9105d2bad5 (patch)
tree0bcbf96e0485d00a1a92c013827497bdbab793de /llvm/lib/CodeGen
parente29d63e98abb3feb8479940fea9432ac74011779 (diff)
downloadbcm5719-llvm-c738c9651925e67ea3153bb651eebb9105d2bad5.tar.gz
bcm5719-llvm-c738c9651925e67ea3153bb651eebb9105d2bad5.zip
Erase virtual registers that are unused after DCE.
llvm-svn: 127773
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r--llvm/lib/CodeGen/LiveRangeEdit.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/llvm/lib/CodeGen/LiveRangeEdit.cpp b/llvm/lib/CodeGen/LiveRangeEdit.cpp
index 0769f95262d..e994d8c32d4 100644
--- a/llvm/lib/CodeGen/LiveRangeEdit.cpp
+++ b/llvm/lib/CodeGen/LiveRangeEdit.cpp
@@ -174,13 +174,21 @@ void LiveRangeEdit::eliminateDeadDefs(SmallVectorImpl<MachineInstr*> &Dead,
if (!TargetRegisterInfo::isVirtualRegister(Reg))
continue;
LiveInterval &LI = LIS.getInterval(Reg);
- // Remove defined value.
- if (MOI->isDef())
- if (VNInfo *VNI = LI.getVNInfoAt(Idx))
- LI.removeValNo(VNI);
+
// Shrink read registers.
if (MI->readsVirtualRegister(Reg))
ToShrink.insert(&LI);
+
+ // Remove defined value.
+ if (MOI->isDef()) {
+ if (VNInfo *VNI = LI.getVNInfoAt(Idx)) {
+ LI.removeValNo(VNI);
+ if (LI.empty()) {
+ ToShrink.remove(&LI);
+ eraseVirtReg(Reg, LIS);
+ }
+ }
+ }
}
if (delegate_)
OpenPOWER on IntegriCloud