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