Support allocation of huge stack frame(>2g) on PPC64.
For ELFv2 ABI on Linux, quoted from the spec 2.2.3.1 General Stack Frame Requirements
There is no maximum stack frame size defined.
On AIX, XL allows such huge frame.
Paths
| Differential D107886
[PowerPC] Support huge frame size for PPC64 ClosedPublic Authored by lkail on Aug 11 2021, 12:38 AM.
Details
Summary Support allocation of huge stack frame(>2g) on PPC64. For ELFv2 ABI on Linux, quoted from the spec 2.2.3.1 General Stack Frame Requirements
On AIX, XL allows such huge frame.
Diff Detail
Event Timelinelkail added a parent revision: D107435: [PowerPC] Use int64_t to represent stack object offset and frame size.Aug 11 2021, 12:38 AM Comment Actions Do we have a practical requirement for such a thing? At the very least, I believe we will need code in FI elimination to handle these absurd frame sizes and the test case should show accesses to the stack both before and after the huge allocation. This revision now requires changes to proceed.Aug 11 2021, 5:58 AM Comment Actions I'm still testing the patch with variant workloads to insure corner cases are handled correctly. lkail removed a parent revision: D107435: [PowerPC] Use int64_t to represent stack object offset and frame size.Aug 22 2021, 7:14 PM Comment Actions Tested it with test-suite and other benchmarks on AIX and Linux, no regression found. lkail retitled this revision from [PowerPC][2/n] Support huge frame size for PPC64 to [PowerPC] Support huge frame size for PPC64.Aug 31 2021, 7:31 PM
lkail added inline comments.
Comment Actions This LGTM. Let's wait for @nemanjai 's comments/approval since he requested change to this patch. Comment Actions LGTM.
This revision is now accepted and ready to land.Jun 2 2022, 7:36 PM lkail marked an inline comment as done. This revision was landed with ongoing or failed builds.Jun 6 2022, 2:08 AM Closed by commit rG5018a5dcbe70: [PowerPC] Support huge frame size for PPC64 (authored by lkail). · Explain Why This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 434403 llvm/lib/Target/PowerPC/PPCFrameLowering.cpp
llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
llvm/lib/Target/PowerPC/PPCInstrInfo.h
llvm/lib/Target/PowerPC/PPCInstrInfo.cpp
llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp
llvm/test/CodeGen/PowerPC/huge-frame-call.ll
llvm/test/CodeGen/PowerPC/huge-frame-size.ll
llvm/test/CodeGen/PowerPC/huge-frame-unsupported.ll
llvm/test/CodeGen/PowerPC/ppc64-rop-protection-aix.ll
llvm/test/CodeGen/PowerPC/ppc64-rop-protection.ll
|
You remove this here but this pre-condition still holds for 32-bit mode. Why not change the condition to only trap in 32-bit mode rather than never?