diff options
| author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-03-16 22:56:13 +0000 |
|---|---|---|
| committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-03-16 22:56:13 +0000 |
| commit | c738c9651925e67ea3153bb651eebb9105d2bad5 (patch) | |
| tree | 0bcbf96e0485d00a1a92c013827497bdbab793de /llvm/lib/CodeGen | |
| parent | e29d63e98abb3feb8479940fea9432ac74011779 (diff) | |
| download | bcm5719-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.cpp | 16 |
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_) |

