1198090Srdivacky//===- SparcMachineFunctionInfo.h - Sparc Machine Function Info -*- C++ -*-===// 2198090Srdivacky// 3198090Srdivacky// The LLVM Compiler Infrastructure 4198090Srdivacky// 5198090Srdivacky// This file is distributed under the University of Illinois Open Source 6198090Srdivacky// License. See LICENSE.TXT for details. 7198090Srdivacky// 8198090Srdivacky//===----------------------------------------------------------------------===// 9198090Srdivacky// 10198090Srdivacky// This file declares Sparc specific per-machine-function information. 11198090Srdivacky// 12198090Srdivacky//===----------------------------------------------------------------------===// 13198090Srdivacky#ifndef SPARCMACHINEFUNCTIONINFO_H 14198090Srdivacky#define SPARCMACHINEFUNCTIONINFO_H 15198090Srdivacky 16198090Srdivacky#include "llvm/CodeGen/MachineFunction.h" 17198090Srdivacky 18198090Srdivackynamespace llvm { 19198090Srdivacky 20198090Srdivacky class SparcMachineFunctionInfo : public MachineFunctionInfo { 21235633Sdim virtual void anchor(); 22198090Srdivacky private: 23198090Srdivacky unsigned GlobalBaseReg; 24207618Srdivacky 25207618Srdivacky /// VarArgsFrameOffset - Frame offset to start of varargs area. 26207618Srdivacky int VarArgsFrameOffset; 27207618Srdivacky 28218893Sdim /// SRetReturnReg - Holds the virtual register into which the sret 29218893Sdim /// argument is passed. 30218893Sdim unsigned SRetReturnReg; 31263509Sdim 32263509Sdim /// IsLeafProc - True if the function is a leaf procedure. 33263509Sdim bool IsLeafProc; 34198090Srdivacky public: 35218893Sdim SparcMachineFunctionInfo() 36263509Sdim : GlobalBaseReg(0), VarArgsFrameOffset(0), SRetReturnReg(0), 37263509Sdim IsLeafProc(false) {} 38207618Srdivacky explicit SparcMachineFunctionInfo(MachineFunction &MF) 39263509Sdim : GlobalBaseReg(0), VarArgsFrameOffset(0), SRetReturnReg(0), 40263509Sdim IsLeafProc(false) {} 41198090Srdivacky 42198090Srdivacky unsigned getGlobalBaseReg() const { return GlobalBaseReg; } 43198090Srdivacky void setGlobalBaseReg(unsigned Reg) { GlobalBaseReg = Reg; } 44207618Srdivacky 45207618Srdivacky int getVarArgsFrameOffset() const { return VarArgsFrameOffset; } 46207618Srdivacky void setVarArgsFrameOffset(int Offset) { VarArgsFrameOffset = Offset; } 47218893Sdim 48218893Sdim unsigned getSRetReturnReg() const { return SRetReturnReg; } 49218893Sdim void setSRetReturnReg(unsigned Reg) { SRetReturnReg = Reg; } 50263509Sdim 51263509Sdim void setLeafProc(bool rhs) { IsLeafProc = rhs; } 52263509Sdim bool isLeafProc() const { return IsLeafProc; } 53198090Srdivacky }; 54198090Srdivacky} 55198090Srdivacky 56198090Srdivacky#endif 57