]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
rl78.c (rl78_expand_prologue): Use AX to copy between SP and FP.
authorDJ Delorie <dj@redhat.com>
Thu, 12 Sep 2013 22:43:30 +0000 (18:43 -0400)
committerDJ Delorie <dj@gcc.gnu.org>
Thu, 12 Sep 2013 22:43:30 +0000 (18:43 -0400)
* config/rl78/rl78.c (rl78_expand_prologue): Use AX to copy
between SP and FP.
(rl78_expand_epilogue): Likewise.

From-SVN: r202542

gcc/ChangeLog
gcc/config/rl78/rl78.c

index 91dba09a86624356c45e32f48f108bccb2a47808..5dc8ed03385d0eb296366926274e5acca487df63 100644 (file)
@@ -1,3 +1,9 @@
+2013-09-12  DJ Delorie  <dj@redhat.com>
+
+       * config/rl78/rl78.c (rl78_expand_prologue): Use AX to copy
+       between SP and FP.
+       (rl78_expand_epilogue): Likewise.
+
 2013-09-12  Vladimir Makarov  <vmakarov@redhat.com>
 
        PR middle-end/58335
index cd9010ab190559137b6ccec986826fd7d8256888..3f13955d896e4ff59e9df0a84acc9ed0d2980aa3 100644 (file)
@@ -1036,8 +1036,12 @@ rl78_expand_prologue (void)
     emit_insn (gen_sel_rb (GEN_INT (0)));
 
   if (frame_pointer_needed)
-    F (emit_move_insn (gen_rtx_REG (HImode, FRAME_POINTER_REGNUM),
-                      gen_rtx_REG (HImode, STACK_POINTER_REGNUM)));
+    {
+      F (emit_move_insn (gen_rtx_REG (HImode, AX_REG),
+                        gen_rtx_REG (HImode, STACK_POINTER_REGNUM)));
+      F (emit_move_insn (gen_rtx_REG (HImode, FRAME_POINTER_REGNUM),
+                        gen_rtx_REG (HImode, AX_REG)));
+    }
 
   fs = cfun->machine->framesize_locals + cfun->machine->framesize_outgoing;
   while (fs > 0)
@@ -1061,8 +1065,10 @@ rl78_expand_epilogue (void)
 
   if (frame_pointer_needed)
     {
-      emit_move_insn (gen_rtx_REG (HImode, STACK_POINTER_REGNUM),
+      emit_move_insn (gen_rtx_REG (HImode, AX_REG),
                      gen_rtx_REG (HImode, FRAME_POINTER_REGNUM));
+      emit_move_insn (gen_rtx_REG (HImode, STACK_POINTER_REGNUM),
+                     gen_rtx_REG (HImode, AX_REG));
     }
   else
     {