diff options
| author | Matthias Braun <matze@braunis.de> | 2014-12-10 01:12:23 +0000 |
|---|---|---|
| committer | Matthias Braun <matze@braunis.de> | 2014-12-10 01:12:23 +0000 |
| commit | fe896c703c2fe30ef7b21b2bfe8fcc023271ebe1 (patch) | |
| tree | 45752f93c0df0859b416859750c29457fbd01d3e /llvm/lib/CodeGen | |
| parent | 7044d69e875f0b7a561290823bd34fe71748560d (diff) | |
| download | bcm5719-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.cpp | 10 |
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); + } + } } } } |

