SparcFrameLowering.h revision 6ed9284c2bcfb81fa0303409c6bd4366bc1e822a
1//===-- SparcFrameLowering.h - Define frame lowering for Sparc --*- 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 SPARC_FRAMEINFO_H
15#define SPARC_FRAMEINFO_H
16
17#include "Sparc.h"
18#include "SparcSubtarget.h"
19#include "llvm/Target/TargetFrameLowering.h"
20
21namespace llvm {
22  class SparcSubtarget;
23
24class SparcFrameLowering : public TargetFrameLowering {
25  const SparcSubtarget &SubTarget;
26public:
27  explicit SparcFrameLowering(const SparcSubtarget &ST)
28    : TargetFrameLowering(TargetFrameLowering::StackGrowsDown,
29                          ST.is64Bit() ? 16 : 8, 0, ST.is64Bit() ? 16 : 8),
30      SubTarget(ST) {}
31
32  /// emitProlog/emitEpilog - These methods insert prolog and epilog code into
33  /// the function.
34  void emitPrologue(MachineFunction &MF) const;
35  void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const;
36
37  void eliminateCallFramePseudoInstr(MachineFunction &MF,
38                                     MachineBasicBlock &MBB,
39                                     MachineBasicBlock::iterator I) const;
40
41  bool hasFP(const MachineFunction &MF) const { return false; }
42};
43
44} // End llvm namespace
45
46#endif
47