[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