XCoreMachineFunctionInfo.h revision b25baef26f03b9909b65dd5f762b38f93000445d
1//====- XCoreMachineFuctionInfo.h - XCore machine function info -*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file declares XCore-specific per-machine-function information.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef XCOREMACHINEFUNCTIONINFO_H
15#define XCOREMACHINEFUNCTIONINFO_H
16
17#include "llvm/CodeGen/MachineFunction.h"
18#include "llvm/CodeGen/MachineFrameInfo.h"
19#include <vector>
20
21namespace llvm {
22
23// Forward declarations
24class Function;
25
26/// XCoreFunctionInfo - This class is derived from MachineFunction private
27/// XCore target-specific information for each MachineFunction.
28class XCoreFunctionInfo : public MachineFunctionInfo {
29private:
30  bool UsesLR;
31  int LRSpillSlot;
32  int FPSpillSlot;
33  int VarArgsFrameIndex;
34  std::vector<std::pair<unsigned, CalleeSavedInfo> > SpillLabels;
35
36public:
37  XCoreFunctionInfo() :
38    UsesLR(false),
39    LRSpillSlot(0),
40    FPSpillSlot(0),
41    VarArgsFrameIndex(0) {}
42
43  XCoreFunctionInfo(MachineFunction &MF) :
44    UsesLR(false),
45    LRSpillSlot(0),
46    FPSpillSlot(0),
47    VarArgsFrameIndex(0) {}
48
49  ~XCoreFunctionInfo() {}
50
51  void setVarArgsFrameIndex(int off) { VarArgsFrameIndex = off; }
52  int getVarArgsFrameIndex() const { return VarArgsFrameIndex; }
53
54  void setUsesLR(bool val) { UsesLR = val; }
55  bool getUsesLR() const { return UsesLR; }
56
57  void setLRSpillSlot(int off) { LRSpillSlot = off; }
58  int getLRSpillSlot() const { return LRSpillSlot; }
59
60  void setFPSpillSlot(int off) { FPSpillSlot = off; }
61  int getFPSpillSlot() const { return FPSpillSlot; }
62
63  std::vector<std::pair<unsigned, CalleeSavedInfo> >&getSpillLabels() {
64    return SpillLabels;
65  }
66};
67} // End llvm namespace
68
69#endif // XCOREMACHINEFUNCTIONINFO_H
70