diff --git a/lib/CodeGen/PHIElimination.cpp b/lib/CodeGen/PHIElimination.cpp index 91805a93edf..8441e49bbc6 100644 --- a/lib/CodeGen/PHIElimination.cpp +++ b/lib/CodeGen/PHIElimination.cpp @@ -145,6 +145,10 @@ void PNE::LowerAtomicPHINode(MachineBasicBlock &MBB, LV->addVirtualRegisterDead(DestReg, PHICopy); LV->removeVirtualRegistersDead(MPhi); } + + // Realize that the destination register is defined by the PHI copy now, not + // the PHI itself. + LV->getVarInfo(DestReg).DefInst = PHICopy; } // Adjust the VRegPHIUseCount map to account for the removal of this PHI diff --git a/lib/CodeGen/VirtRegMap.cpp b/lib/CodeGen/VirtRegMap.cpp index 26498b7ec1f..f27ae2a8212 100644 --- a/lib/CodeGen/VirtRegMap.cpp +++ b/lib/CodeGen/VirtRegMap.cpp @@ -393,6 +393,7 @@ void LocalSpiller::RewriteMBB(MachineBasicBlock &MBB, const VirtRegMap &VRM) { // Otherwise, reload it and remember that we have it. PhysReg = VRM.getPhys(VirtReg); + assert(PhysReg && "Must map virtreg to physreg!"); const TargetRegisterClass* RC = MBB.getParent()->getSSARegMap()->getRegClass(VirtReg);