Create proper frame index for FP
authorAnton Korobeynikov <asl@math.spbu.ru>
Mon, 3 Aug 2009 08:14:30 +0000 (08:14 +0000)
committerAnton Korobeynikov <asl@math.spbu.ru>
Mon, 3 Aug 2009 08:14:30 +0000 (08:14 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77966 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86RegisterInfo.cpp

index 5817bf0ac64ccf987f28785f4559eaf41d5c7a88..21f4dc5694c8e0d40e5f61c9e592c0e403acc63c 100644 (file)
@@ -653,9 +653,11 @@ X86RegisterInfo::processFunctionBeforeCalleeSavedScan(MachineFunction &MF,
   if (hasFP(MF)) {
     assert((TailCallReturnAddrDelta <= 0) &&
            "The Delta should always be zero or negative");
+    const TargetFrameInfo &TFI = *MF.getTarget().getFrameInfo();
     // Create a frame entry for the EBP register that must be saved.
     int FrameIdx = MFI->CreateFixedObject(SlotSize,
-                                          (int)SlotSize * -2+
+                                          -(int)SlotSize +
+                                          TFI.getOffsetOfLocalArea() +
                                           TailCallReturnAddrDelta);
     assert(FrameIdx == MFI->getObjectIndexBegin() &&
            "Slot for EBP register must be last in order to be found!");