summaryrefslogtreecommitdiff
path: root/llvm/lib/Target/SystemZ/SystemZMachineFunctionInfo.h
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Target/SystemZ/SystemZMachineFunctionInfo.h')
-rw-r--r--llvm/lib/Target/SystemZ/SystemZMachineFunctionInfo.h20
1 files changed, 18 insertions, 2 deletions
diff --git a/llvm/lib/Target/SystemZ/SystemZMachineFunctionInfo.h b/llvm/lib/Target/SystemZ/SystemZMachineFunctionInfo.h
index 333195989a11..be7012a37a3d 100644
--- a/llvm/lib/Target/SystemZ/SystemZMachineFunctionInfo.h
+++ b/llvm/lib/Target/SystemZ/SystemZMachineFunctionInfo.h
@@ -27,6 +27,9 @@ struct GPRRegs {
class SystemZMachineFunctionInfo : public MachineFunctionInfo {
virtual void anchor();
+ /// Size of expected parameter area for current function. (Fixed args only).
+ unsigned SizeOfFnParams;
+
SystemZ::GPRRegs SpillGPRRegs;
SystemZ::GPRRegs RestoreGPRRegs;
Register VarArgsFirstGPR;
@@ -35,17 +38,25 @@ class SystemZMachineFunctionInfo : public MachineFunctionInfo {
unsigned RegSaveFrameIndex;
int FramePointerSaveIndex;
unsigned NumLocalDynamics;
+ /// z/OS XPLINK ABI: incoming ADA virtual register.
+ Register VRegADA;
public:
SystemZMachineFunctionInfo(const Function &F, const TargetSubtargetInfo *STI)
- : VarArgsFirstGPR(0), VarArgsFirstFPR(0), VarArgsFrameIndex(0),
- RegSaveFrameIndex(0), FramePointerSaveIndex(0), NumLocalDynamics(0) {}
+ : SizeOfFnParams(0), VarArgsFirstGPR(0), VarArgsFirstFPR(0),
+ VarArgsFrameIndex(0), RegSaveFrameIndex(0), FramePointerSaveIndex(0),
+ NumLocalDynamics(0) {}
MachineFunctionInfo *
clone(BumpPtrAllocator &Allocator, MachineFunction &DestMF,
const DenseMap<MachineBasicBlock *, MachineBasicBlock *> &Src2DstMBB)
const override;
+ // z/OS: Get and set the size of the expected parameter area for the
+ // current function. (ie. Size of param area in caller).
+ unsigned getSizeOfFnParams() const { return SizeOfFnParams; }
+ void setSizeOfFnParams(unsigned Size) { SizeOfFnParams = Size; }
+
// Get and set the first and last call-saved GPR that should be saved by
// this function and the SP offset for the STMG. These are 0 if no GPRs
// need to be saved or restored.
@@ -91,6 +102,11 @@ public:
// Count number of local-dynamic TLS symbols used.
unsigned getNumLocalDynamicTLSAccesses() const { return NumLocalDynamics; }
void incNumLocalDynamicTLSAccesses() { ++NumLocalDynamics; }
+
+ // Get and set the function's incoming special XPLINK ABI defined ADA
+ // register.
+ Register getADAVirtualRegister() const { return VRegADA; }
+ void setADAVirtualRegister(Register Reg) { VRegADA = Reg; }
};
} // end namespace llvm