Skip to content

Commit 820b9c3

Browse files
committed
Added test case to verify no FP setup occurs with "frame-pointer"="all".
1 parent d4eecd0 commit 820b9c3

File tree

2 files changed

+22
-7
lines changed

2 files changed

+22
-7
lines changed

llvm/lib/Target/AMDGPU/SIFrameLowering.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2171,13 +2171,13 @@ bool SIFrameLowering::hasFPImpl(const MachineFunction &MF) const {
21712171
return MFI.getStackSize() != 0;
21722172
}
21732173

2174-
return (frameTriviallyRequiresSP(MFI) &&
2175-
!MF.getInfo<SIMachineFunctionInfo>()->isChainFunction()) ||
2176-
MFI.isFrameAddressTaken() ||
2177-
MF.getSubtarget<GCNSubtarget>().getRegisterInfo()->hasStackRealignment(
2178-
MF) ||
2179-
mayReserveScratchForCWSR(MF) ||
2180-
MF.getTarget().Options.DisableFramePointerElim(MF);
2174+
return !MF.getInfo<SIMachineFunctionInfo>()->isChainFunction() &&
2175+
(frameTriviallyRequiresSP(MFI) || MFI.isFrameAddressTaken() ||
2176+
MF.getSubtarget<GCNSubtarget>()
2177+
.getRegisterInfo()
2178+
->hasStackRealignment(MF) ||
2179+
mayReserveScratchForCWSR(MF) ||
2180+
MF.getTarget().Options.DisableFramePointerElim(MF));
21812181
}
21822182

21832183
bool SIFrameLowering::mayReserveScratchForCWSR(

llvm/test/CodeGen/AMDGPU/amdgpu-cs-chain-frame-pointer.ll

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,19 @@ define amdgpu_cs_chain void @indirect(ptr %callee) {
6666
unreachable
6767
}
6868

69+
define amdgpu_cs_chain void @fp_all() #0 {
70+
; CHECK-LABEL: fp_all:
71+
; CHECK: ; %bb.0:
72+
; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
73+
; CHECK-NEXT: s_mov_b32 s0, 0
74+
; CHECK-NEXT: v_mov_b32_e32 v0, s0
75+
; CHECK-NEXT: scratch_store_dword off, v0, off
76+
; CHECK-NEXT: s_endpgm
77+
%v = alloca i32, align 4, addrspace(5)
78+
store i32 0, ptr addrspace(5) %v, align 4
79+
ret void
80+
}
81+
82+
attributes #0 = { "frame-pointer"="all" }
83+
6984
declare void @llvm.amdgcn.cs.chain.p0.i64.v3i32.sl_i32p5i32i32s(ptr, i64, <3 x i32>, { i32, ptr addrspace(5), i32, i32 }, i32 immarg, ...)

0 commit comments

Comments
 (0)