diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/SIISelLowering.cpp | 7 | 
1 files changed, 6 insertions, 1 deletions
| diff --git a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp index 6a46dfdb225..58afd167e0c 100644 --- a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp +++ b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp @@ -3351,8 +3351,13 @@ MachineBasicBlock *SITargetLowering::EmitInstrWithCustomInserter(    case AMDGPU::ADJCALLSTACKDOWN: {      const SIMachineFunctionInfo *Info = MF->getInfo<SIMachineFunctionInfo>();      MachineInstrBuilder MIB(*MF, &MI); + +    // Add an implicit use of the frame offset reg to prevent the restore copy +    // inserted after the call from being reorderd after stack operations in the +    // the caller's frame.      MIB.addReg(Info->getStackPtrOffsetReg(), RegState::ImplicitDefine) -        .addReg(Info->getStackPtrOffsetReg(), RegState::Implicit); +        .addReg(Info->getStackPtrOffsetReg(), RegState::Implicit) +        .addReg(Info->getFrameOffsetReg(), RegState::Implicit);      return BB;    }    case AMDGPU::SI_CALL_ISEL: | 

