1193323Sed//===- MSP430MachineFuctionInfo.h - MSP430 machine function info -*- C++ -*-==//
2193323Sed//
3193323Sed//                     The LLVM Compiler Infrastructure
4193323Sed//
5193323Sed// This file is distributed under the University of Illinois Open Source
6193323Sed// License. See LICENSE.TXT for details.
7193323Sed//
8193323Sed//===----------------------------------------------------------------------===//
9193323Sed//
10193323Sed// This file declares MSP430-specific per-machine-function information.
11193323Sed//
12193323Sed//===----------------------------------------------------------------------===//
13193323Sed
14193323Sed#ifndef MSP430MACHINEFUNCTIONINFO_H
15193323Sed#define MSP430MACHINEFUNCTIONINFO_H
16193323Sed
17193323Sed#include "llvm/CodeGen/MachineFunction.h"
18193323Sed
19193323Sednamespace llvm {
20193323Sed
21193323Sed/// MSP430MachineFunctionInfo - This class is derived from MachineFunction and
22193323Sed/// contains private MSP430 target-specific information for each MachineFunction.
23193323Sedclass MSP430MachineFunctionInfo : public MachineFunctionInfo {
24235633Sdim  virtual void anchor();
25235633Sdim
26193323Sed  /// CalleeSavedFrameSize - Size of the callee-saved register portion of the
27193323Sed  /// stack frame in bytes.
28193323Sed  unsigned CalleeSavedFrameSize;
29193323Sed
30200581Srdivacky  /// ReturnAddrIndex - FrameIndex for return slot.
31200581Srdivacky  int ReturnAddrIndex;
32200581Srdivacky
33252723Sdim  /// VarArgsFrameIndex - FrameIndex for start of varargs area.
34252723Sdim  int VarArgsFrameIndex;
35252723Sdim
36193323Sedpublic:
37193323Sed  MSP430MachineFunctionInfo() : CalleeSavedFrameSize(0) {}
38193323Sed
39193574Sed  explicit MSP430MachineFunctionInfo(MachineFunction &MF)
40200581Srdivacky    : CalleeSavedFrameSize(0), ReturnAddrIndex(0) {}
41193323Sed
42193323Sed  unsigned getCalleeSavedFrameSize() const { return CalleeSavedFrameSize; }
43193323Sed  void setCalleeSavedFrameSize(unsigned bytes) { CalleeSavedFrameSize = bytes; }
44200581Srdivacky
45200581Srdivacky  int getRAIndex() const { return ReturnAddrIndex; }
46200581Srdivacky  void setRAIndex(int Index) { ReturnAddrIndex = Index; }
47252723Sdim
48252723Sdim  int getVarArgsFrameIndex() const { return VarArgsFrameIndex;}
49252723Sdim  void setVarArgsFrameIndex(int Index) { VarArgsFrameIndex = Index; }
50193323Sed};
51193323Sed
52193323Sed} // End llvm namespace
53193323Sed
54193323Sed#endif
55