1235633Sdim//===-- XCoreMachineFuctionInfo.h - XCore 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 XCore-specific per-machine-function information. 11193323Sed// 12193323Sed//===----------------------------------------------------------------------===// 13193323Sed 14193323Sed#ifndef XCOREMACHINEFUNCTIONINFO_H 15193323Sed#define XCOREMACHINEFUNCTIONINFO_H 16193323Sed 17252723Sdim#include "llvm/CodeGen/MachineFrameInfo.h" 18193323Sed#include "llvm/CodeGen/MachineFunction.h" 19193323Sed#include <vector> 20193323Sed 21193323Sednamespace llvm { 22193323Sed 23193323Sed// Forward declarations 24193323Sedclass Function; 25193323Sed 26193323Sed/// XCoreFunctionInfo - This class is derived from MachineFunction private 27193323Sed/// XCore target-specific information for each MachineFunction. 28193323Sedclass XCoreFunctionInfo : public MachineFunctionInfo { 29235633Sdim virtual void anchor(); 30193323Sed bool UsesLR; 31193323Sed int LRSpillSlot; 32193323Sed int FPSpillSlot; 33193323Sed int VarArgsFrameIndex; 34205218Srdivacky std::vector<std::pair<MCSymbol*, CalleeSavedInfo> > SpillLabels; 35193323Sed 36193323Sedpublic: 37193323Sed XCoreFunctionInfo() : 38193323Sed UsesLR(false), 39193323Sed LRSpillSlot(0), 40193323Sed FPSpillSlot(0), 41193323Sed VarArgsFrameIndex(0) {} 42193323Sed 43193574Sed explicit XCoreFunctionInfo(MachineFunction &MF) : 44193323Sed UsesLR(false), 45193323Sed LRSpillSlot(0), 46193323Sed FPSpillSlot(0), 47193323Sed VarArgsFrameIndex(0) {} 48193323Sed 49193323Sed ~XCoreFunctionInfo() {} 50193323Sed 51193323Sed void setVarArgsFrameIndex(int off) { VarArgsFrameIndex = off; } 52193323Sed int getVarArgsFrameIndex() const { return VarArgsFrameIndex; } 53193323Sed 54193323Sed void setUsesLR(bool val) { UsesLR = val; } 55193323Sed bool getUsesLR() const { return UsesLR; } 56193323Sed 57193323Sed void setLRSpillSlot(int off) { LRSpillSlot = off; } 58193323Sed int getLRSpillSlot() const { return LRSpillSlot; } 59193323Sed 60193323Sed void setFPSpillSlot(int off) { FPSpillSlot = off; } 61193323Sed int getFPSpillSlot() const { return FPSpillSlot; } 62193323Sed 63205218Srdivacky std::vector<std::pair<MCSymbol*, CalleeSavedInfo> > &getSpillLabels() { 64193323Sed return SpillLabels; 65193323Sed } 66193323Sed}; 67193323Sed} // End llvm namespace 68193323Sed 69193323Sed#endif // XCOREMACHINEFUNCTIONINFO_H 70