diff options
author | Geoff Berry <gberry@codeaurora.org> | 2016-11-29 19:31:35 +0000 |
---|---|---|
committer | Geoff Berry <gberry@codeaurora.org> | 2016-11-29 19:31:35 +0000 |
commit | 4d66cea34724687518d89f27bd5e40a7288d18f7 (patch) | |
tree | e0abe72342cb65c68a598d2151943c3d6525aee3 /llvm/lib/CodeGen/LiveRangeEdit.cpp | |
parent | 97279a8ca323355c68e56e9ec8d198f254ecd68b (diff) | |
download | bcm5719-llvm-4d66cea34724687518d89f27bd5e40a7288d18f7.tar.gz bcm5719-llvm-4d66cea34724687518d89f27bd5e40a7288d18f7.zip |
[LiveRangeEdit] Handle instructions with no defs correctly.
Summary:
The code in LiveRangeEdit::eliminateDeadDef() that computes isOrigDef
doesn't handle instructions in which operand 0 is not a def (e.g. KILL)
correctly. Add a check that operand 0 is a def before doing the rest of
the isOrigDef computation.
Reviewers: qcolombet, MatzeB, wmi
Subscribers: mcrosier, llvm-commits
Differential Revision: https://reviews.llvm.org/D27174
llvm-svn: 288189
Diffstat (limited to 'llvm/lib/CodeGen/LiveRangeEdit.cpp')
-rw-r--r-- | llvm/lib/CodeGen/LiveRangeEdit.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/LiveRangeEdit.cpp b/llvm/lib/CodeGen/LiveRangeEdit.cpp index 264e7f713b9..88fed6212d1 100644 --- a/llvm/lib/CodeGen/LiveRangeEdit.cpp +++ b/llvm/lib/CodeGen/LiveRangeEdit.cpp @@ -272,7 +272,8 @@ void LiveRangeEdit::eliminateDeadDef(MachineInstr *MI, ToShrinkSet &ToShrink, bool ReadsPhysRegs = false; bool isOrigDef = false; unsigned Dest; - if (VRM && MI->getOperand(0).isReg()) { + if (VRM && MI->getOperand(0).isReg() && MI->getOperand(0).isDef()) { + assert(MI->getDesc().getNumDefs() == 1); Dest = MI->getOperand(0).getReg(); unsigned Original = VRM->getOriginal(Dest); LiveInterval &OrigLI = LIS.getInterval(Original); |