Add <imp-def> of super-register when lowering SUBREG_TO_REG.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Fri, 27 Jul 2012 20:19:49 +0000 (20:19 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Fri, 27 Jul 2012 20:19:49 +0000 (20:19 +0000)
Patch by Tyler Nowicki!

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

lib/CodeGen/ExpandPostRAPseudos.cpp
test/CodeGen/X86/liveness-local-regalloc.ll

index b14afc286d497599381ebbc97c7e4dbfd10e893d..7a17331ba1d621e4747b402202c6bd993786a8d7 100644 (file)
@@ -131,13 +131,16 @@ bool ExpandPostRA::LowerSubregToReg(MachineInstr *MI) {
   } else {
     TII->copyPhysReg(*MBB, MI, MI->getDebugLoc(), DstSubReg, InsReg,
                      MI->getOperand(2).isKill());
+
+    // Implicitly define DstReg for subsequent uses.
+    MachineBasicBlock::iterator CopyMI = MI;
+    --CopyMI;
+    CopyMI->addRegisterDefined(DstReg);
+
     // Transfer the kill/dead flags, if needed.
     if (MI->getOperand(0).isDead())
       TransferDeadFlag(MI, DstSubReg, TRI);
-    DEBUG({
-        MachineBasicBlock::iterator dMI = MI;
-        dbgs() << "subreg: " << *(--dMI);
-      });
+    DEBUG(dbgs() << "subreg: " << *CopyMI);
   }
 
   DEBUG(dbgs() << '\n');
index faeeaa7e9c4f7449944ff8ee31faf4b8ab14bd4a..721f545985d7fb16731f1f1581638751cd6d995b 100644 (file)
@@ -1,4 +1,4 @@
-; RUN: llc < %s -mcpu=generic -regalloc=fast -optimize-regalloc=0 -verify-machineinstrs -mtriple=x86_64-apple-darwin10
+; RUN: llc < %s -regalloc=fast -optimize-regalloc=0 -verify-machineinstrs -mtriple=x86_64-apple-darwin10
 ; <rdar://problem/7755473>
 ; PR12821