At -O0, multiple uses of a virtual registers in the same BB are being marked
authorEvan Cheng <evan.cheng@apple.com>
Mon, 14 Nov 2011 21:02:09 +0000 (21:02 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Mon, 14 Nov 2011 21:02:09 +0000 (21:02 +0000)
"kill". This looks like a bug upstream. Since that's going to take some time
to understand, loosen the assertion and disable the optimization when
multiple kills are seen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144568 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/TwoAddressInstructionPass.cpp

index 33ed4cc907a1614a34e99a89cc07db8506ec3e7b..a702c6c840711c70bd11f8c79f79c91efb6d9471 100644 (file)
@@ -502,7 +502,8 @@ MachineInstr *findLocalKill(unsigned Reg, MachineBasicBlock *MBB,
       continue;
     if (!UI.getOperand().isKill())
       return 0;
-    assert(!KillMI && "More than one local kills?");
+    if (KillMI)
+      return 0;  // -O0 kill markers cannot be trusted?
     KillMI = UseMI;
   }