[llvm] r288189 - [LiveRangeEdit] Handle instructions with no defs correctly.
Geoff Berry via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 29 11:31:35 PST 2016
Author: gberry
Date: Tue Nov 29 13:31:35 2016
New Revision: 288189
URL: http://llvm.org/viewvc/llvm-project?rev=288189&view=rev
Log:
[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
Modified:
llvm/trunk/lib/CodeGen/LiveRangeEdit.cpp
Modified: llvm/trunk/lib/CodeGen/LiveRangeEdit.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LiveRangeEdit.cpp?rev=288189&r1=288188&r2=288189&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/LiveRangeEdit.cpp (original)
+++ llvm/trunk/lib/CodeGen/LiveRangeEdit.cpp Tue Nov 29 13:31:35 2016
@@ -272,7 +272,8 @@ void LiveRangeEdit::eliminateDeadDef(Mac
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);
More information about the llvm-commits
mailing list