aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2013-08-20 09:09:05 +0930
committerAlan Modra <amodra@gcc.gnu.org>2013-08-20 09:09:05 +0930
commitaf4b4236a4904483218619473b8ca787e59903ca (patch)
treeb85b008a7963778ec85b30b5a0e95e45d9682418
parent0d6332222bd42774b4c8751e10f4bcb64a5e4f22 (diff)
downloadgcc-af4b4236a4904483218619473b8ca787e59903ca.zip
gcc-af4b4236a4904483218619473b8ca787e59903ca.tar.gz
gcc-af4b4236a4904483218619473b8ca787e59903ca.tar.bz2
re PR target/57865 (Broken _save64gpr and _rest64gpr usage)
PR target/57865 * config/rs6000/rs6000.c (rs6000_emit_prologue): Correct ool_adjust. (rs6000_emit_epilogue): Likewise. From-SVN: r201860
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/rs6000/rs6000.c6
2 files changed, 8 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1e28906e..3a2d8f4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2013-08-20 Alan Modra <amodra@gmail.com>
+
+ PR target/57865
+ * config/rs6000/rs6000.c (rs6000_emit_prologue): Correct ool_adjust.
+ (rs6000_emit_epilogue): Likewise.
+
2013-08-19 Dehao Chen (dehao@google.com)
* value-prof.c (gimple_ic): Fix the bug of adding EH edge.
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index b469930..c1acbd8 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -21409,8 +21409,7 @@ rs6000_emit_prologue (void)
HOST_WIDE_INT offset;
if (!(strategy & SAVE_INLINE_GPRS))
- ool_adjust = 8 * (info->first_gp_reg_save
- - (FIRST_SAVRES_REGISTER + 1));
+ ool_adjust = 8 * (info->first_gp_reg_save - FIRST_SAVED_GP_REGNO);
offset = info->spe_gp_save_offset + frame_off - ool_adjust;
spe_save_area_ptr = gen_rtx_REG (Pmode, 11);
save_off = frame_off - offset;
@@ -22652,8 +22651,7 @@ rs6000_emit_epilogue (int sibcall)
anew to every function. */
if (!restoring_GPRs_inline)
- ool_adjust = 8 * (info->first_gp_reg_save
- - (FIRST_SAVRES_REGISTER + 1));
+ ool_adjust = 8 * (info->first_gp_reg_save - FIRST_SAVED_GP_REGNO);
frame_reg_rtx = gen_rtx_REG (Pmode, 11);
emit_insn (gen_addsi3 (frame_reg_rtx, old_frame_reg_rtx,
GEN_INT (info->spe_gp_save_offset