From 5f15f9e296d3b9cc364f02701824d94c95d2dc48 Mon Sep 17 00:00:00 2001 From: amodra Date: Fri, 1 Oct 2010 03:23:46 +0000 Subject: [PATCH] PR target/45807 * config/rs6000/rs6000.c (rs6000_emit_prologue): Properly sign extend toc_restore_insn. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@164825 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/config/rs6000/rs6000.c | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 056d07a..ea4f385 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-10-01 Alan Modra + + PR target/45807 + * config/rs6000/rs6000.c (rs6000_emit_prologue): Properly sign + extend toc_restore_insn. + 2010-09-30 Richard Guenther PR tree-optimization/43959 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 6399cab..0b058d3 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -20234,8 +20234,8 @@ rs6000_emit_prologue (void) be updated if we arrived at this function via a plt call or toc adjusting stub. */ emit_move_insn (tmp_reg_si, gen_rtx_MEM (SImode, tmp_reg)); - toc_restore_insn = ((TARGET_32BIT ? 0x80410014 : 0xE8410028) - ^ 0x80000000) - 0x80000000; + toc_restore_insn = TARGET_32BIT ? 0x80410014 : 0xE8410028; + toc_restore_insn = (toc_restore_insn ^ 0x80000000) - 0x80000000; emit_insn (gen_xorsi3 (tmp_reg_si, tmp_reg_si, GEN_INT (toc_restore_insn & ~0xffff))); compare_result = gen_rtx_REG (CCUNSmode, CR0_REGNO); -- 2.7.4