diff options
Diffstat (limited to 'llvm/lib/Target/SystemZ/SystemZMachineFunctionInfo.h')
| -rw-r--r-- | llvm/lib/Target/SystemZ/SystemZMachineFunctionInfo.h | 20 |
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 |
