mep.c (mep_expand_prologue): Fix frame pointer calculations.
authorDJ Delorie <dj@redhat.com>
Tue, 14 Jul 2009 00:45:59 +0000 (20:45 -0400)
committerDJ Delorie <dj@gcc.gnu.org>
Tue, 14 Jul 2009 00:45:59 +0000 (20:45 -0400)
* config/mep/mep.c (mep_expand_prologue): Fix frame pointer
calculations.

From-SVN: r149612

gcc/ChangeLog
gcc/config/mep/mep.c

index 52f41bae0132102b421d6c26639e3842fd13a835..44030032931deebef533e5ec3491b3b1fead99ba 100644 (file)
@@ -1,3 +1,8 @@
+2009-07-13  DJ Delorie  <dj@redhat.com>
+
+       * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
+       calculations.
+
 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
        
        * haifa-sched.c 
index 33bde90efc4d10da30e9aef8ebf8adb2dd79ca58..9e63b4dbe3280a5e13b3ece8bd682ed9ea97597d 100644 (file)
@@ -2894,7 +2894,12 @@ mep_expand_prologue (void)
       }
   
   if (frame_pointer_needed)
-    add_constant (FP_REGNO, SP_REGNO, sp_offset - frame_size, 1);
+    {
+      /* We've already adjusted down by sp_offset.  Total $sp change
+        is reg_save_size + frame_size.  We want a net change here of
+        just reg_save_size.  */
+      add_constant (FP_REGNO, SP_REGNO, sp_offset - reg_save_size, 1);
+    }
 
   add_constant (SP_REGNO, SP_REGNO, sp_offset-(reg_save_size+frame_size), 1);