Thumb1FrameLowering.h revision 36b56886974eae4f9c5ebc96befd3e7bfe5de338
1//===-- Thumb1FrameLowering.h - Thumb1-specific frame info stuff --*- 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// 11// 12//===----------------------------------------------------------------------===// 13 14#ifndef __THUMB_FRAMEINFO_H_ 15#define __THUMB_FRAMEINFO_H_ 16 17#include "ARMFrameLowering.h" 18#include "ARMSubtarget.h" 19#include "Thumb1InstrInfo.h" 20#include "Thumb1RegisterInfo.h" 21#include "llvm/Target/TargetFrameLowering.h" 22 23namespace llvm { 24 25class Thumb1FrameLowering : public ARMFrameLowering { 26public: 27 explicit Thumb1FrameLowering(const ARMSubtarget &sti) 28 : ARMFrameLowering(sti) { 29 } 30 31 /// emitProlog/emitEpilog - These methods insert prolog and epilog code into 32 /// the function. 33 void emitPrologue(MachineFunction &MF) const override; 34 void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const override; 35 36 bool spillCalleeSavedRegisters(MachineBasicBlock &MBB, 37 MachineBasicBlock::iterator MI, 38 const std::vector<CalleeSavedInfo> &CSI, 39 const TargetRegisterInfo *TRI) const override; 40 bool restoreCalleeSavedRegisters(MachineBasicBlock &MBB, 41 MachineBasicBlock::iterator MI, 42 const std::vector<CalleeSavedInfo> &CSI, 43 const TargetRegisterInfo *TRI) const override; 44 45 bool hasReservedCallFrame(const MachineFunction &MF) const override; 46 47 void 48 eliminateCallFramePseudoInstr(MachineFunction &MF, 49 MachineBasicBlock &MBB, 50 MachineBasicBlock::iterator MI) const override; 51}; 52 53} // End llvm namespace 54 55#endif 56