xref: /aosp_15_r20/external/llvm/lib/Target/Sparc/SparcMachineFunctionInfo.h (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker //===- SparcMachineFunctionInfo.h - Sparc Machine Function Info -*- C++ -*-===//
2*9880d681SAndroid Build Coastguard Worker //
3*9880d681SAndroid Build Coastguard Worker //                     The LLVM Compiler Infrastructure
4*9880d681SAndroid Build Coastguard Worker //
5*9880d681SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source
6*9880d681SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details.
7*9880d681SAndroid Build Coastguard Worker //
8*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
9*9880d681SAndroid Build Coastguard Worker //
10*9880d681SAndroid Build Coastguard Worker // This file declares  Sparc specific per-machine-function information.
11*9880d681SAndroid Build Coastguard Worker //
12*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
13*9880d681SAndroid Build Coastguard Worker #ifndef LLVM_LIB_TARGET_SPARC_SPARCMACHINEFUNCTIONINFO_H
14*9880d681SAndroid Build Coastguard Worker #define LLVM_LIB_TARGET_SPARC_SPARCMACHINEFUNCTIONINFO_H
15*9880d681SAndroid Build Coastguard Worker 
16*9880d681SAndroid Build Coastguard Worker #include "llvm/CodeGen/MachineFunction.h"
17*9880d681SAndroid Build Coastguard Worker 
18*9880d681SAndroid Build Coastguard Worker namespace llvm {
19*9880d681SAndroid Build Coastguard Worker 
20*9880d681SAndroid Build Coastguard Worker   class SparcMachineFunctionInfo : public MachineFunctionInfo {
21*9880d681SAndroid Build Coastguard Worker     virtual void anchor();
22*9880d681SAndroid Build Coastguard Worker   private:
23*9880d681SAndroid Build Coastguard Worker     unsigned GlobalBaseReg;
24*9880d681SAndroid Build Coastguard Worker 
25*9880d681SAndroid Build Coastguard Worker     /// VarArgsFrameOffset - Frame offset to start of varargs area.
26*9880d681SAndroid Build Coastguard Worker     int VarArgsFrameOffset;
27*9880d681SAndroid Build Coastguard Worker 
28*9880d681SAndroid Build Coastguard Worker     /// SRetReturnReg - Holds the virtual register into which the sret
29*9880d681SAndroid Build Coastguard Worker     /// argument is passed.
30*9880d681SAndroid Build Coastguard Worker     unsigned SRetReturnReg;
31*9880d681SAndroid Build Coastguard Worker 
32*9880d681SAndroid Build Coastguard Worker     /// IsLeafProc - True if the function is a leaf procedure.
33*9880d681SAndroid Build Coastguard Worker     bool IsLeafProc;
34*9880d681SAndroid Build Coastguard Worker   public:
SparcMachineFunctionInfo()35*9880d681SAndroid Build Coastguard Worker     SparcMachineFunctionInfo()
36*9880d681SAndroid Build Coastguard Worker       : GlobalBaseReg(0), VarArgsFrameOffset(0), SRetReturnReg(0),
37*9880d681SAndroid Build Coastguard Worker         IsLeafProc(false) {}
SparcMachineFunctionInfo(MachineFunction & MF)38*9880d681SAndroid Build Coastguard Worker     explicit SparcMachineFunctionInfo(MachineFunction &MF)
39*9880d681SAndroid Build Coastguard Worker       : GlobalBaseReg(0), VarArgsFrameOffset(0), SRetReturnReg(0),
40*9880d681SAndroid Build Coastguard Worker         IsLeafProc(false) {}
41*9880d681SAndroid Build Coastguard Worker 
getGlobalBaseReg()42*9880d681SAndroid Build Coastguard Worker     unsigned getGlobalBaseReg() const { return GlobalBaseReg; }
setGlobalBaseReg(unsigned Reg)43*9880d681SAndroid Build Coastguard Worker     void setGlobalBaseReg(unsigned Reg) { GlobalBaseReg = Reg; }
44*9880d681SAndroid Build Coastguard Worker 
getVarArgsFrameOffset()45*9880d681SAndroid Build Coastguard Worker     int getVarArgsFrameOffset() const { return VarArgsFrameOffset; }
setVarArgsFrameOffset(int Offset)46*9880d681SAndroid Build Coastguard Worker     void setVarArgsFrameOffset(int Offset) { VarArgsFrameOffset = Offset; }
47*9880d681SAndroid Build Coastguard Worker 
getSRetReturnReg()48*9880d681SAndroid Build Coastguard Worker     unsigned getSRetReturnReg() const { return SRetReturnReg; }
setSRetReturnReg(unsigned Reg)49*9880d681SAndroid Build Coastguard Worker     void setSRetReturnReg(unsigned Reg) { SRetReturnReg = Reg; }
50*9880d681SAndroid Build Coastguard Worker 
setLeafProc(bool rhs)51*9880d681SAndroid Build Coastguard Worker     void setLeafProc(bool rhs) { IsLeafProc = rhs; }
isLeafProc()52*9880d681SAndroid Build Coastguard Worker     bool isLeafProc() const { return IsLeafProc; }
53*9880d681SAndroid Build Coastguard Worker   };
54*9880d681SAndroid Build Coastguard Worker }
55*9880d681SAndroid Build Coastguard Worker 
56*9880d681SAndroid Build Coastguard Worker #endif
57