summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorMatthias Braun <matze@braunis.de>2014-12-10 01:12:23 +0000
committerMatthias Braun <matze@braunis.de>2014-12-10 01:12:23 +0000
commitfe896c703c2fe30ef7b21b2bfe8fcc023271ebe1 (patch)
tree45752f93c0df0859b416859750c29457fbd01d3e /llvm/lib/CodeGen
parent7044d69e875f0b7a561290823bd34fe71748560d (diff)
downloadbcm5719-llvm-fe896c703c2fe30ef7b21b2bfe8fcc023271ebe1.tar.gz
bcm5719-llvm-fe896c703c2fe30ef7b21b2bfe8fcc023271ebe1.zip
LiveRangeEdit: Adapt eliminateDeadDef() to subregister liveness.
llvm-svn: 223882
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r--llvm/lib/CodeGen/LiveRangeEdit.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/LiveRangeEdit.cpp b/llvm/lib/CodeGen/LiveRangeEdit.cpp
index a0fb712d118..634e93de69d 100644
--- a/llvm/lib/CodeGen/LiveRangeEdit.cpp
+++ b/llvm/lib/CodeGen/LiveRangeEdit.cpp
@@ -286,8 +286,16 @@ void LiveRangeEdit::eliminateDeadDef(MachineInstr *MI, ToShrinkSet &ToShrink) {
if (TheDelegate)
TheDelegate->LRE_WillShrinkVirtReg(LI.reg);
LI.removeValNo(VNI);
- if (LI.empty())
+ if (LI.empty()) {
RegsToErase.push_back(Reg);
+ } else {
+ // Also remove the value in subranges.
+ for (LiveInterval::subrange_iterator S = LI.subrange_begin(),
+ SE = LI.subrange_end(); S != SE; ++S) {
+ if (VNInfo *SVNI = S->getVNInfoAt(Idx))
+ S->removeValNo(SVNI);
+ }
+ }
}
}
}
OpenPOWER on IntegriCloud