192600c2eSKazushi (Jam) Marukawa //===- VEMachineFunctionInfo.h - VE Machine Function Info -------*- C++ -*-===// 292600c2eSKazushi (Jam) Marukawa // 392600c2eSKazushi (Jam) Marukawa // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 492600c2eSKazushi (Jam) Marukawa // See https://llvm.org/LICENSE.txt for license information. 592600c2eSKazushi (Jam) Marukawa // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 692600c2eSKazushi (Jam) Marukawa // 792600c2eSKazushi (Jam) Marukawa //===----------------------------------------------------------------------===// 892600c2eSKazushi (Jam) Marukawa // 992600c2eSKazushi (Jam) Marukawa // This file declares VE specific per-machine-function information. 1092600c2eSKazushi (Jam) Marukawa // 1192600c2eSKazushi (Jam) Marukawa //===----------------------------------------------------------------------===// 1292600c2eSKazushi (Jam) Marukawa #ifndef LLVM_LIB_TARGET_VE_VEMACHINEFUNCTIONINFO_H 1392600c2eSKazushi (Jam) Marukawa #define LLVM_LIB_TARGET_VE_VEMACHINEFUNCTIONINFO_H 1492600c2eSKazushi (Jam) Marukawa 1592600c2eSKazushi (Jam) Marukawa #include "llvm/CodeGen/MachineFunction.h" 1692600c2eSKazushi (Jam) Marukawa 1792600c2eSKazushi (Jam) Marukawa namespace llvm { 1892600c2eSKazushi (Jam) Marukawa 1992600c2eSKazushi (Jam) Marukawa class VEMachineFunctionInfo : public MachineFunctionInfo { 2092600c2eSKazushi (Jam) Marukawa virtual void anchor(); 2192600c2eSKazushi (Jam) Marukawa 2292600c2eSKazushi (Jam) Marukawa private: 2360431bd7SKazushi (Jam) Marukawa Register GlobalBaseReg; 2460431bd7SKazushi (Jam) Marukawa 2507c9f757SKazushi (Jam) Marukawa /// VarArgsFrameOffset - Frame offset to start of varargs area. 2607c9f757SKazushi (Jam) Marukawa int VarArgsFrameOffset; 2707c9f757SKazushi (Jam) Marukawa 2892600c2eSKazushi (Jam) Marukawa /// IsLeafProc - True if the function is a leaf procedure. 2992600c2eSKazushi (Jam) Marukawa bool IsLeafProc; 3092600c2eSKazushi (Jam) Marukawa 3192600c2eSKazushi (Jam) Marukawa public: VEMachineFunctionInfo()32f3a344d2SKazu Hirata VEMachineFunctionInfo() : VarArgsFrameOffset(0), IsLeafProc(false) {} VEMachineFunctionInfo(const Function & F,const TargetSubtargetInfo * STI)33*69e75ae6SMatt Arsenault VEMachineFunctionInfo(const Function &F, const TargetSubtargetInfo *STI) 34f3a344d2SKazu Hirata : VarArgsFrameOffset(0), IsLeafProc(false) {} 3560431bd7SKazushi (Jam) Marukawa 36cc5a1b3dSMatt Arsenault MachineFunctionInfo * 37cc5a1b3dSMatt Arsenault clone(BumpPtrAllocator &Allocator, MachineFunction &DestMF, 38cc5a1b3dSMatt Arsenault const DenseMap<MachineBasicBlock *, MachineBasicBlock *> &Src2DstMBB) 39cc5a1b3dSMatt Arsenault const override; 40cc5a1b3dSMatt Arsenault getGlobalBaseReg()4160431bd7SKazushi (Jam) Marukawa Register getGlobalBaseReg() const { return GlobalBaseReg; } setGlobalBaseReg(Register Reg)4260431bd7SKazushi (Jam) Marukawa void setGlobalBaseReg(Register Reg) { GlobalBaseReg = Reg; } 4307c9f757SKazushi (Jam) Marukawa getVarArgsFrameOffset()4407c9f757SKazushi (Jam) Marukawa int getVarArgsFrameOffset() const { return VarArgsFrameOffset; } setVarArgsFrameOffset(int Offset)4507c9f757SKazushi (Jam) Marukawa void setVarArgsFrameOffset(int Offset) { VarArgsFrameOffset = Offset; } 4692600c2eSKazushi (Jam) Marukawa setLeafProc(bool rhs)4792600c2eSKazushi (Jam) Marukawa void setLeafProc(bool rhs) { IsLeafProc = rhs; } isLeafProc()4892600c2eSKazushi (Jam) Marukawa bool isLeafProc() const { return IsLeafProc; } 4992600c2eSKazushi (Jam) Marukawa }; 5092600c2eSKazushi (Jam) Marukawa } // namespace llvm 5192600c2eSKazushi (Jam) Marukawa 5292600c2eSKazushi (Jam) Marukawa #endif 53