Simplify eliminateFrameIndex() interface back down now that PEI doesn't need
[oota-llvm.git] / lib / Target / PIC16 / PIC16RegisterInfo.cpp
1 //===- PIC16RegisterInfo.cpp - PIC16 Register Information -----------------===//
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 // This file contains the PIC16 implementation of the TargetRegisterInfo class.
11 //
12 //===----------------------------------------------------------------------===//
13
14 #define DEBUG_TYPE "pic16-reg-info"
15
16 #include "PIC16.h"
17 #include "PIC16RegisterInfo.h"
18 #include "llvm/ADT/BitVector.h"
19 #include "llvm/Support/ErrorHandling.h"
20
21 using namespace llvm;
22
23 PIC16RegisterInfo::PIC16RegisterInfo(const TargetInstrInfo &tii,
24                                      const PIC16Subtarget &st)
25   : PIC16GenRegisterInfo(PIC16::ADJCALLSTACKDOWN, PIC16::ADJCALLSTACKUP),
26     TII(tii),
27     ST(st) {}
28
29 #include "PIC16GenRegisterInfo.inc"
30
31 /// PIC16 Callee Saved Registers
32 const unsigned* PIC16RegisterInfo::
33 getCalleeSavedRegs(const MachineFunction *MF) const {
34   static const unsigned CalleeSavedRegs[] = { 0 };
35   return CalleeSavedRegs;
36 }
37
38 BitVector PIC16RegisterInfo::getReservedRegs(const MachineFunction &MF) const {
39   BitVector Reserved(getNumRegs());
40   return Reserved;
41 }
42
43 bool PIC16RegisterInfo::hasFP(const MachineFunction &MF) const {
44   return false;
45 }
46
47 void PIC16RegisterInfo::
48 eliminateFrameIndex(MachineBasicBlock::iterator II, int SPAdj,
49                     RegScavenger *RS) const
50 { /* NOT YET IMPLEMENTED */ }
51
52 void PIC16RegisterInfo::emitPrologue(MachineFunction &MF) const
53 {    /* NOT YET IMPLEMENTED */  }
54
55 void PIC16RegisterInfo::
56 emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const
57 {    /* NOT YET IMPLEMENTED */  }
58
59 int PIC16RegisterInfo::
60 getDwarfRegNum(unsigned RegNum, bool isEH) const {
61   llvm_unreachable("Not keeping track of debug information yet!!");
62   return -1;
63 }
64
65 unsigned PIC16RegisterInfo::getFrameRegister(const MachineFunction &MF) const {
66   llvm_unreachable("PIC16 Does not have any frame register");
67   return 0;
68 }
69
70 unsigned PIC16RegisterInfo::getRARegister() const {
71   llvm_unreachable("PIC16 Does not have any return address register");
72   return 0;
73 }
74
75 // This function eliminates ADJCALLSTACKDOWN,
76 // ADJCALLSTACKUP pseudo instructions
77 void PIC16RegisterInfo::
78 eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
79                               MachineBasicBlock::iterator I) const {
80   // Simply discard ADJCALLSTACKDOWN,
81   // ADJCALLSTACKUP instructions.
82   MBB.erase(I);
83 }
84