diff --git a/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp b/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp --- a/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp +++ b/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp @@ -336,20 +336,23 @@ MCRegister StackPtrReg = MFI->getStackPtrOffsetReg(); if (StackPtrReg) { + if (isSubRegister(ScratchRSrcReg, StackPtrReg)) + report_fatal_error("scratch resource registers overlap stack pointer"); reserveRegisterTuples(Reserved, StackPtrReg); - assert(!isSubRegister(ScratchRSrcReg, StackPtrReg)); } MCRegister FrameReg = MFI->getFrameOffsetReg(); if (FrameReg) { + if (isSubRegister(ScratchRSrcReg, FrameReg)) + report_fatal_error("scratch resource registers overlap frame offset"); reserveRegisterTuples(Reserved, FrameReg); - assert(!isSubRegister(ScratchRSrcReg, FrameReg)); } if (hasBasePointer(MF)) { MCRegister BasePtrReg = getBaseRegister(); + if (isSubRegister(ScratchRSrcReg, BasePtrReg)) + report_fatal_error("scratch resource registers overlap base pointer"); reserveRegisterTuples(Reserved, BasePtrReg); - assert(!isSubRegister(ScratchRSrcReg, BasePtrReg)); } for (MCRegister Reg : MFI->WWMReservedRegs) {