[PATCH] D82408: [NFC][PPC][AIX] Add stack frame layout diagram to PPCISelLowering.cpp
Zarko Todorovski via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 23 14:00:14 PDT 2020
ZarkoCA created this revision.
ZarkoCA added reviewers: sfertile, cebowleratibm, hubert.reinterpretcast, Xiangling_L.
ZarkoCA added a project: PowerPC.
Herald added subscribers: llvm-commits, kbarton, hiraditya, nemanjai.
Herald added a project: LLVM.
This NFC patch a visualization of the AIX ABI stack frame layout.
Based on https://www.ibm.com/support/knowledgecenter/en/ssw_aix_72/assembler/idalangref_runtime_process.html
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D82408
Files:
llvm/lib/Target/PowerPC/PPCISelLowering.cpp
Index: llvm/lib/Target/PowerPC/PPCISelLowering.cpp
===================================================================
--- llvm/lib/Target/PowerPC/PPCISelLowering.cpp
+++ llvm/lib/Target/PowerPC/PPCISelLowering.cpp
@@ -7200,6 +7200,45 @@
llvm_unreachable("Only general purpose registers expected.");
}
+// AIX ABI Stack Frame Layout:
+// +--------------------------------------------+
+// SP +---> | Back chain |
+// | +--------------------------------------------+
+// | | Saved Conditional Register |
+// | +--------------------------------------------+
+// | | Saved Linkage Register |
+// | +--------------------------------------------+
+// | | Reserved for compilers |
+// | +--------------------------------------------+
+// | | Reserved for binders |
+// | +--------------------------------------------+
+// | | Saved TOC pointer |
+// | +--------------------------------------------+
+// | | Parameter save area |
+// | +--------------------------------------------+
+// | | Alloca space |
+// | +--------------------------------------------+
+// | | Local variable space |
+// | +--------------------------------------------+
+// | | Float/int conversion temporary |
+// | +--------------------------------------------+
+// | | Save area for AltiVec registers |
+// | +--------------------------------------------+
+// | | AltiVec alignment padding |
+// | +--------------------------------------------+
+// | | Save area for VRSAVE register |
+// | +--------------------------------------------+
+// | | Save area for General Purpose registers |
+// | +--------------------------------------------+
+// | | Save area for Floating Point registers |
+// | +--------------------------------------------+
+// +---> | Back chain |
+// +--------------------------------------------+
+//
+// Specifications:
+// AIX 7.2 Assembler Language Reference
+// Subroutine linkage convention
+
SDValue PPCTargetLowering::LowerFormalArguments_AIX(
SDValue Chain, CallingConv::ID CallConv, bool isVarArg,
const SmallVectorImpl<ISD::InputArg> &Ins, const SDLoc &dl,
@@ -7425,6 +7464,8 @@
const SmallVectorImpl<ISD::InputArg> &Ins, const SDLoc &dl,
SelectionDAG &DAG, SmallVectorImpl<SDValue> &InVals,
const CallBase *CB) const {
+ // See PPCTargetLowering::LowerFormalArguments_AIX() for a description of the
+ // AIX ABI stack frame layout.
assert((CFlags.CallConv == CallingConv::C ||
CFlags.CallConv == CallingConv::Cold ||
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D82408.272817.patch
Type: text/x-patch
Size: 3066 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200623/0a37b9de/attachment.bin>
More information about the llvm-commits
mailing list