diff --git a/llvm/lib/CodeGen/PHIElimination.cpp b/llvm/lib/CodeGen/PHIElimination.cpp --- a/llvm/lib/CodeGen/PHIElimination.cpp +++ b/llvm/lib/CodeGen/PHIElimination.cpp @@ -461,6 +461,15 @@ assert(MRI->use_empty(SrcReg) && "Expected a single use from UnspillableTerminator"); SrcRegDef->getOperand(0).setReg(IncomingReg); + + // Update LiveVariables. + if (LV) { + LiveVariables::VarInfo &SrcVI = LV->getVarInfo(SrcReg); + LiveVariables::VarInfo &IncomingVI = LV->getVarInfo(IncomingReg); + IncomingVI.AliveBlocks = std::move(SrcVI.AliveBlocks); + SrcVI.AliveBlocks.clear(); + } + continue; }