SparcMachineFunctionInfo.h revision 261991
154359Sroberto//===- SparcMachineFunctionInfo.h - Sparc Machine Function Info -*- C++ -*-===//
256746Sroberto//
354359Sroberto//                     The LLVM Compiler Infrastructure
456746Sroberto//
554359Sroberto// This file is distributed under the University of Illinois Open Source
654359Sroberto// License. See LICENSE.TXT for details.
754359Sroberto//
854359Sroberto//===----------------------------------------------------------------------===//
954359Sroberto//
1054359Sroberto// This file declares  Sparc specific per-machine-function information.
1154359Sroberto//
1254359Sroberto//===----------------------------------------------------------------------===//
1354359Sroberto#ifndef SPARCMACHINEFUNCTIONINFO_H
1454359Sroberto#define SPARCMACHINEFUNCTIONINFO_H
1554359Sroberto
1654359Sroberto#include "llvm/CodeGen/MachineFunction.h"
1754359Sroberto
1854359Srobertonamespace llvm {
1954359Sroberto
2054359Sroberto  class SparcMachineFunctionInfo : public MachineFunctionInfo {
2154359Sroberto    virtual void anchor();
2254359Sroberto  private:
2354359Sroberto    unsigned GlobalBaseReg;
2454359Sroberto
2554359Sroberto    /// VarArgsFrameOffset - Frame offset to start of varargs area.
2654359Sroberto    int VarArgsFrameOffset;
2754359Sroberto
2854359Sroberto    /// SRetReturnReg - Holds the virtual register into which the sret
2954359Sroberto    /// argument is passed.
3056746Sroberto    unsigned SRetReturnReg;
3154359Sroberto
3254359Sroberto    /// IsLeafProc - True if the function is a leaf procedure.
3354359Sroberto    bool IsLeafProc;
3454359Sroberto  public:
3554359Sroberto    SparcMachineFunctionInfo()
3654359Sroberto      : GlobalBaseReg(0), VarArgsFrameOffset(0), SRetReturnReg(0),
3754359Sroberto        IsLeafProc(false) {}
3854359Sroberto    explicit SparcMachineFunctionInfo(MachineFunction &MF)
3954359Sroberto      : GlobalBaseReg(0), VarArgsFrameOffset(0), SRetReturnReg(0),
4054359Sroberto        IsLeafProc(false) {}
4154359Sroberto
4254359Sroberto    unsigned getGlobalBaseReg() const { return GlobalBaseReg; }
4382498Sroberto    void setGlobalBaseReg(unsigned Reg) { GlobalBaseReg = Reg; }
4454359Sroberto
4582498Sroberto    int getVarArgsFrameOffset() const { return VarArgsFrameOffset; }
4654359Sroberto    void setVarArgsFrameOffset(int Offset) { VarArgsFrameOffset = Offset; }
4754359Sroberto
4854359Sroberto    unsigned getSRetReturnReg() const { return SRetReturnReg; }
4954359Sroberto    void setSRetReturnReg(unsigned Reg) { SRetReturnReg = Reg; }
5054359Sroberto
5154359Sroberto    void setLeafProc(bool rhs) { IsLeafProc = rhs; }
5254359Sroberto    bool isLeafProc() const { return IsLeafProc; }
5354359Sroberto  };
5454359Sroberto}
5554359Sroberto
5654359Sroberto#endif
5754359Sroberto