MipsFrameLowering.h revision 218885
1161764Sobrien//==--- MipsFrameLowering.h - Define frame lowering for Mips --*- C++ -*---===// 2108746Sobrien// 3108746Sobrien// The LLVM Compiler Infrastructure 4108746Sobrien// 5108746Sobrien// This file is distributed under the University of Illinois Open Source 6108746Sobrien// License. See LICENSE.TXT for details. 7108746Sobrien// 8161764Sobrien//===----------------------------------------------------------------------===// 9108746Sobrien// 10108746Sobrien// 11108746Sobrien// 12108746Sobrien//===----------------------------------------------------------------------===// 13108746Sobrien 14108746Sobrien#ifndef ALPHA_FRAMEINFO_H 15108746Sobrien#define ALPHA_FRAMEINFO_H 16108746Sobrien 17108746Sobrien#include "Mips.h" 18161764Sobrien#include "MipsSubtarget.h" 19108746Sobrien#include "llvm/Target/TargetFrameLowering.h" 20161764Sobrien 21108746Sobriennamespace llvm { 22108746Sobrien class MipsSubtarget; 23108746Sobrien 24108746Sobrienclass MipsFrameLowering : public TargetFrameLowering { 25108746Sobrienprotected: 26108746Sobrien const MipsSubtarget &STI; 27108746Sobrien 28108746Sobrienpublic: 29161764Sobrien explicit MipsFrameLowering(const MipsSubtarget &sti) 30161764Sobrien // FIXME: Is this correct at all? 31161764Sobrien : TargetFrameLowering(StackGrowsUp, 8, 0), STI(sti) { 32161764Sobrien } 33161764Sobrien 34108746Sobrien void adjustMipsStackFrame(MachineFunction &MF) const; 35108746Sobrien 36108746Sobrien /// emitProlog/emitEpilog - These methods insert prolog and epilog code into 37133936Sobrien /// the function. 38133936Sobrien void emitPrologue(MachineFunction &MF) const; 39108746Sobrien void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const; 40133936Sobrien 41108746Sobrien bool hasFP(const MachineFunction &MF) const; 42108746Sobrien 43133936Sobrien void processFunctionBeforeFrameFinalized(MachineFunction &MF) const; 44133936Sobrien}; 45133936Sobrien 46133936Sobrien} // End llvm namespace 47161764Sobrien 48161764Sobrien#endif 49133936Sobrien