Index: llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.cpp =================================================================== --- llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.cpp +++ llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.cpp @@ -352,6 +352,8 @@ Register LaneVGPR = TRI->findUnusedRegister( MF.getRegInfo(), &AMDGPU::VGPR_32RegClass, MF, true); + if (LaneVGPR == Register()) + return false; SpillVGPRs.push_back(SGPRSpillVGPRCSR(LaneVGPR, None)); FuncInfo->VGPRReservedForSGPRSpill = LaneVGPR; return true; Index: llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp =================================================================== --- llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp +++ llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp @@ -332,9 +332,8 @@ for (MCPhysReg Reg : MFI->getVGPRSpillAGPRs()) reserveRegisterTuples(Reserved, Reg); - if (MFI->VGPRReservedForSGPRSpill) - for (auto SSpill : MFI->getSGPRSpillVGPRs()) - reserveRegisterTuples(Reserved, SSpill.VGPR); + for (auto SSpill : MFI->getSGPRSpillVGPRs()) + reserveRegisterTuples(Reserved, SSpill.VGPR); return Reserved; }