On Thu, Feb 12, 2015 at 10:04:45AM -0500, David Edelsohn wrote:
> On Thu, Feb 12, 2015 at 7:33 AM, Alan Modra <amo...@gmail.com> wrote:
> >         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Use addsi3_carry
> >         or adddi3_carry when restoring frame_reg_rtx from r0 after restvr.
> 
> Okay.

Committed revision 220665.  I also intend to commit the following as
obvious when stage1 opens, to fix a bug in code I contributed.  It's
not a regression nor is the generated code incorrect, but we have one
unnecessary instruction.

--- /tmp/savres.s       2015-02-12 22:29:05.598357377 +1030
+++ savres.s    2015-02-13 08:26:49.437565909 +1030
@@ -1916,11 +1916,10 @@
        lwz 11,0(1)
        addi 0,11,-48
        bl _restvr_26
-       addic 11,0,16
-       lwz 12,-12(11)
-       lwz 30,-8(11)
-       lwz 31,-4(11)
-       addi 11,11,32
+       addic 11,0,48
+       lwz 12,-44(11)
+       lwz 30,-40(11)
+       lwz 31,-36(11)
        mtcrf 32,12
        b _restfpr_28_x
        .size   b_cvfr,.-b_cvfr
@@ -1966,10 +1965,9 @@
        lwz 11,0(1)
        addi 0,11,-48
        bl _restvr_26
-       addic 11,0,16
-       lwz 30,-8(11)
-       lwz 31,-4(11)
-       addi 11,11,32
+       addic 11,0,48
+       lwz 30,-40(11)
+       lwz 31,-36(11)
        b _restfpr_28_x
        .size   b_vfr,.-b_vfr
        .align 2

        * config/rs6000/rs6000.c (rs6000_emit_epilogue): Fix typo in
        code setting up r11 for out-of-line fp restore.

Index: gcc/config/rs6000/rs6000.c
===================================================================
--- gcc/config/rs6000/rs6000.c  (revision 220665)
+++ gcc/config/rs6000/rs6000.c  (working copy)
@@ -24966,7 +24966,7 @@ rs6000_emit_epilogue (int sibcall)
                  bool lr = !(strategy & REST_NOINLINE_FPRS_DOESNT_RESTORE_LR);
                  int sel = SAVRES_FPR | (lr ? SAVRES_LR : 0);
                  newptr_regno = ptr_regno_for_savres (sel);
-                 end_save = info->gp_save_offset + info->gp_size;
+                 end_save = info->fp_save_offset + info->fp_size;
                }
 
              if (newptr_regno != 1 && REGNO (frame_reg_rtx) != newptr_regno)


-- 
Alan Modra
Australia Development Lab, IBM

Reply via email to