Rename TargetFrameInfo into TargetFrameLowering. Also, put couple of FIXMEs and fixes...
[oota-llvm.git] / lib / Target / SystemZ / SystemZFrameLowering.h
1 //=- SystemZFrameLowering.h - Define frame lowering 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/TargetFrameLowering.h"
20 #include "llvm/ADT/IndexedMap.h"
21
22 namespace llvm {
23   class SystemZSubtarget;
24
25 class SystemZFrameLowering : public TargetFrameLowering {
26   IndexedMap<unsigned> RegSpillOffsets;
27 protected:
28   const SystemZSubtarget &STI;
29
30 public:
31   explicit SystemZFrameLowering(const SystemZSubtarget &sti);
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 spillCalleeSavedRegisters(MachineBasicBlock &MBB,
39                                  MachineBasicBlock::iterator MI,
40                                  const std::vector<CalleeSavedInfo> &CSI,
41                                  const TargetRegisterInfo *TRI) const;
42   bool restoreCalleeSavedRegisters(MachineBasicBlock &MBB,
43                                    MachineBasicBlock::iterator MI,
44                                    const std::vector<CalleeSavedInfo> &CSI,
45                                    const TargetRegisterInfo *TRI) const;
46
47   void processFunctionBeforeCalleeSavedScan(MachineFunction &MF,
48                                             RegScavenger *RS) const;
49
50   bool hasReservedCallFrame(const MachineFunction &MF) const { return true; }
51   bool hasFP(const MachineFunction &MF) const;
52   int getFrameIndexOffset(const MachineFunction &MF, int FI) const;
53 };
54
55 } // End llvm namespace
56
57 #endif