Fix a future TwoAddressInstructionPass crash.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 9 Aug 2012 22:08:26 +0000 (22:08 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 9 Aug 2012 22:08:26 +0000 (22:08 +0000)
No test case, the crash only happens when the default use list order is
changed.

llvm-svn: 161627

llvm/lib/CodeGen/TwoAddressInstructionPass.cpp

index d222744..9a219a6 100644 (file)
@@ -235,7 +235,7 @@ bool TwoAddressInstructionPass::Sink3AddrInstruction(MachineBasicBlock *MBB,
   // appropriate location, we can try to sink the current instruction
   // past it.
   if (!KillMI || KillMI->getParent() != MBB || KillMI == MI ||
-      KillMI->isTerminator())
+      KillMI == OldPos || KillMI->isTerminator())
     return false;
 
   // If any of the definitions are used by another instruction between the
@@ -278,6 +278,7 @@ bool TwoAddressInstructionPass::Sink3AddrInstruction(MachineBasicBlock *MBB,
       }
     }
   }
+  assert(KillMO && "Didn't find kill");
 
   // Update kill and LV information.
   KillMO->setIsKill(false);