a37a253504c6102cf58250ef9ccfa51ee0373349
[oota-llvm.git] / lib / Target / SystemZ / SystemZFrameInfo.h
1 //==- SystemZFrameInfo.h - Define TargetFrameInfo for z/System --*- 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 SYSTEMZ_FRAMEINFO_H
15 #define SYSTEMZ_FRAMEINFO_H
16
17 #include "SystemZ.h"
18 #include "SystemZSubtarget.h"
19 #include "llvm/Target/TargetFrameInfo.h"
20
21 namespace llvm {
22   class SystemZSubtarget;
23
24 class SystemZFrameInfo : public TargetFrameInfo {
25 protected:
26   const SystemZSubtarget &STI;
27
28 public:
29   explicit SystemZFrameInfo(const SystemZSubtarget &sti)
30     : TargetFrameInfo(TargetFrameInfo::StackGrowsDown, 8, -160), STI(sti) {
31   }
32
33   /// emitProlog/emitEpilog - These methods insert prolog and epilog code into
34   /// the function.
35   void emitPrologue(MachineFunction &MF) const;
36   void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const;
37
38   bool hasReservedCallFrame(const MachineFunction &MF) const { return true; }
39   bool hasFP(const MachineFunction &MF) const;
40 };
41
42 } // End llvm namespace
43
44 #endif