1ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner//===- SparcMachineFunctionInfo.h - Sparc Machine Function Info -*- C++ -*-===// 2ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner// 3ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner// The LLVM Compiler Infrastructure 4ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner// 5ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner// This file is distributed under the University of Illinois Open Source 6ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner// License. See LICENSE.TXT for details. 7ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner// 8ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner//===----------------------------------------------------------------------===// 9ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner// 10ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner// This file declares Sparc specific per-machine-function information. 11ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner// 12ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner//===----------------------------------------------------------------------===// 13ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner#ifndef SPARCMACHINEFUNCTIONINFO_H 14ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner#define SPARCMACHINEFUNCTIONINFO_H 15ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner 16ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner#include "llvm/CodeGen/MachineFunction.h" 17ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner 18ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattnernamespace llvm { 19ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner 20ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner class SparcMachineFunctionInfo : public MachineFunctionInfo { 212d24e2a396a1d211baaeedf32148a3b657240170David Blaikie virtual void anchor(); 22ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner private: 23ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner unsigned GlobalBaseReg; 241e93df6f0b5ee6e36d7ec18e6035f0f5a53e5ec6Dan Gohman 251e93df6f0b5ee6e36d7ec18e6035f0f5a53e5ec6Dan Gohman /// VarArgsFrameOffset - Frame offset to start of varargs area. 261e93df6f0b5ee6e36d7ec18e6035f0f5a53e5ec6Dan Gohman int VarArgsFrameOffset; 271e93df6f0b5ee6e36d7ec18e6035f0f5a53e5ec6Dan Gohman 288184e289db45acd0bd8bbf7087f7a1274ef55f15Venkatraman Govindaraju /// SRetReturnReg - Holds the virtual register into which the sret 298184e289db45acd0bd8bbf7087f7a1274ef55f15Venkatraman Govindaraju /// argument is passed. 308184e289db45acd0bd8bbf7087f7a1274ef55f15Venkatraman Govindaraju unsigned SRetReturnReg; 31530086925695f074b0e1e38a0d88ee6a4c91c54cVenkatraman Govindaraju 32530086925695f074b0e1e38a0d88ee6a4c91c54cVenkatraman Govindaraju /// IsLeafProc - True if the function is a leaf procedure. 33530086925695f074b0e1e38a0d88ee6a4c91c54cVenkatraman Govindaraju bool IsLeafProc; 34ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner public: 358184e289db45acd0bd8bbf7087f7a1274ef55f15Venkatraman Govindaraju SparcMachineFunctionInfo() 36530086925695f074b0e1e38a0d88ee6a4c91c54cVenkatraman Govindaraju : GlobalBaseReg(0), VarArgsFrameOffset(0), SRetReturnReg(0), 37530086925695f074b0e1e38a0d88ee6a4c91c54cVenkatraman Govindaraju IsLeafProc(false) {} 381e93df6f0b5ee6e36d7ec18e6035f0f5a53e5ec6Dan Gohman explicit SparcMachineFunctionInfo(MachineFunction &MF) 39530086925695f074b0e1e38a0d88ee6a4c91c54cVenkatraman Govindaraju : GlobalBaseReg(0), VarArgsFrameOffset(0), SRetReturnReg(0), 40530086925695f074b0e1e38a0d88ee6a4c91c54cVenkatraman Govindaraju IsLeafProc(false) {} 41ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner 42ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner unsigned getGlobalBaseReg() const { return GlobalBaseReg; } 43ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner void setGlobalBaseReg(unsigned Reg) { GlobalBaseReg = Reg; } 441e93df6f0b5ee6e36d7ec18e6035f0f5a53e5ec6Dan Gohman 451e93df6f0b5ee6e36d7ec18e6035f0f5a53e5ec6Dan Gohman int getVarArgsFrameOffset() const { return VarArgsFrameOffset; } 461e93df6f0b5ee6e36d7ec18e6035f0f5a53e5ec6Dan Gohman void setVarArgsFrameOffset(int Offset) { VarArgsFrameOffset = Offset; } 478184e289db45acd0bd8bbf7087f7a1274ef55f15Venkatraman Govindaraju 488184e289db45acd0bd8bbf7087f7a1274ef55f15Venkatraman Govindaraju unsigned getSRetReturnReg() const { return SRetReturnReg; } 498184e289db45acd0bd8bbf7087f7a1274ef55f15Venkatraman Govindaraju void setSRetReturnReg(unsigned Reg) { SRetReturnReg = Reg; } 50530086925695f074b0e1e38a0d88ee6a4c91c54cVenkatraman Govindaraju 51530086925695f074b0e1e38a0d88ee6a4c91c54cVenkatraman Govindaraju void setLeafProc(bool rhs) { IsLeafProc = rhs; } 52530086925695f074b0e1e38a0d88ee6a4c91c54cVenkatraman Govindaraju bool isLeafProc() const { return IsLeafProc; } 53ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner }; 54ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner} 55ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner 56ea7fd966985ebb7063c8a003d8d344e91644eb86Chris Lattner#endif 57