Typo.
[oota-llvm.git] / lib / CodeGen / PrologEpilogInserter.cpp
index 98c2085ccd8caac8d4678a6bd5399d1577e72dbf..882c6a74404a81994df1d7d37cd3eced85b1d141 100644 (file)
@@ -32,6 +32,9 @@ using namespace llvm;
 
 namespace {
   struct VISIBILITY_HIDDEN PEI : public MachineFunctionPass {
+    static char ID;
+    PEI() : MachineFunctionPass((intptr_t)&ID) {}
+
     const char *getPassName() const {
       return "Prolog/Epilog Insertion & Frame Finalization";
     }
@@ -98,6 +101,7 @@ namespace {
     void replaceFrameIndices(MachineFunction &Fn);
     void insertPrologEpilogCode(MachineFunction &Fn);
   };
+  char PEI::ID = 0;
 }
 
 
@@ -117,7 +121,7 @@ void PEI::calculateCalleeSavedRegisters(MachineFunction &Fn) {
   const TargetFrameInfo *TFI = Fn.getTarget().getFrameInfo();
 
   // Get the callee saved register list...
-  const unsigned *CSRegs = RegInfo->getCalleeSavedRegs();
+  const unsigned *CSRegs = RegInfo->getCalleeSavedRegs(&Fn);
 
   // Get the function call frame set-up and tear-down instruction opcode
   int FrameSetupOpcode   = RegInfo->getCallFrameSetupOpcode();
@@ -166,7 +170,7 @@ void PEI::calculateCalleeSavedRegisters(MachineFunction &Fn) {
   // function, thus needing to be saved and restored in the prolog/epilog.
   //
   const TargetRegisterClass* const *CSRegClasses =
-    RegInfo->getCalleeSavedRegClasses();
+    RegInfo->getCalleeSavedRegClasses(&Fn);
   std::vector<CalleeSavedInfo> CSI;
   for (unsigned i = 0; CSRegs[i]; ++i) {
     unsigned Reg = CSRegs[i];
@@ -424,7 +428,7 @@ void PEI::calculateFrameObjectOffsets(MachineFunction &Fn) {
 
   // Make sure the special register scavenging spill slot is closest to the
   // stack pointer.
-  if (RS) {
+  if (RS && !RegInfo->hasFP(Fn)) {
     int SFI = RS->getScavengingFrameIndex();
     if (SFI >= 0) {
       // If stack grows down, we need to add size of find the lowest