diff --git a/llvm/lib/Target/AMDGPU/SIFrameLowering.cpp b/llvm/lib/Target/AMDGPU/SIFrameLowering.cpp --- a/llvm/lib/Target/AMDGPU/SIFrameLowering.cpp +++ b/llvm/lib/Target/AMDGPU/SIFrameLowering.cpp @@ -158,6 +158,10 @@ return; } + // Mark spill register as used so we will not choose it as `OffsetReg`, + // Otherwise, spill register may possibly get killed even before spill + LiveRegs.addReg(SpillReg); + MCPhysReg OffsetReg = findScratchNonCalleeSaveRegister( MF->getRegInfo(), LiveRegs, AMDGPU::VGPR_32RegClass);