| //====- XCoreMachineFuctionInfo.h - XCore machine function info -*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // This file declares XCore-specific per-machine-function information. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef XCOREMACHINEFUNCTIONINFO_H |
| #define XCOREMACHINEFUNCTIONINFO_H |
| |
| #include "llvm/CodeGen/MachineFunction.h" |
| #include "llvm/CodeGen/MachineFrameInfo.h" |
| #include <vector> |
| |
| namespace llvm { |
| |
| // Forward declarations |
| class Function; |
| |
| /// XCoreFunctionInfo - This class is derived from MachineFunction private |
| /// XCore target-specific information for each MachineFunction. |
| class XCoreFunctionInfo : public MachineFunctionInfo { |
| private: |
| bool UsesLR; |
| int LRSpillSlot; |
| int FPSpillSlot; |
| int VarArgsFrameIndex; |
| std::vector<std::pair<MCSymbol*, CalleeSavedInfo> > SpillLabels; |
| |
| public: |
| XCoreFunctionInfo() : |
| UsesLR(false), |
| LRSpillSlot(0), |
| FPSpillSlot(0), |
| VarArgsFrameIndex(0) {} |
| |
| explicit XCoreFunctionInfo(MachineFunction &MF) : |
| UsesLR(false), |
| LRSpillSlot(0), |
| FPSpillSlot(0), |
| VarArgsFrameIndex(0) {} |
| |
| ~XCoreFunctionInfo() {} |
| |
| void setVarArgsFrameIndex(int off) { VarArgsFrameIndex = off; } |
| int getVarArgsFrameIndex() const { return VarArgsFrameIndex; } |
| |
| void setUsesLR(bool val) { UsesLR = val; } |
| bool getUsesLR() const { return UsesLR; } |
| |
| void setLRSpillSlot(int off) { LRSpillSlot = off; } |
| int getLRSpillSlot() const { return LRSpillSlot; } |
| |
| void setFPSpillSlot(int off) { FPSpillSlot = off; } |
| int getFPSpillSlot() const { return FPSpillSlot; } |
| |
| std::vector<std::pair<MCSymbol*, CalleeSavedInfo> > &getSpillLabels() { |
| return SpillLabels; |
| } |
| }; |
| } // End llvm namespace |
| |
| #endif // XCOREMACHINEFUNCTIONINFO_H |