Fix an overly strict assertion. Source register of a copy may not be killed, it may...
authorEvan Cheng <evan.cheng@apple.com>
Thu, 4 Sep 2008 05:43:55 +0000 (05:43 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Thu, 4 Sep 2008 05:43:55 +0000 (05:43 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55762 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/VirtRegMap.cpp

index 890ecf984c63f53ceb8325ea19efd76f817d82c7..4fd0ad44b05b0839f256dbe9b6cdeec8ffc467a6 100644 (file)
@@ -1730,7 +1730,8 @@ void LocalSpiller::RewriteMBB(MachineBasicBlock &MBB, VirtRegMap &VRM) {
           SmallVector<unsigned, 2> KillRegs;
           InvalidateKills(MI, RegKills, KillOps, &KillRegs);
           if (MO.isDead() && !KillRegs.empty()) {
-            assert(KillRegs[0] == Dst);
+            // Source register or an implicit super-register use is killed.
+            assert(KillRegs[0] == Dst || TRI->isSubRegister(KillRegs[0], Dst));
             // Last def is now dead.
             TransferDeadness(&MBB, Dist, Src, RegKills, KillOps);
           }