From: Anton Blanchard Date: Tue, 11 Jun 2013 06:17:50 +0000 (+0000) Subject: rs6000.c (rs6000_adjust_atomic_subword): Calculate correct shift value in little... X-Git-Tag: releases/gcc-4.9.0~5458 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6b438d5886bd7f0ad25e37b55015a027a53e1949;p=thirdparty%2Fgcc.git rs6000.c (rs6000_adjust_atomic_subword): Calculate correct shift value in little-endian mode. * config/rs6000/rs6000.c (rs6000_adjust_atomic_subword): Calculate correct shift value in little-endian mode. From-SVN: r199935 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 903a79c89a9f..b3db96e24766 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-06-11 Anton Blanchard + + * config/rs6000/rs6000.c (rs6000_adjust_atomic_subword): Calculate + correct shift value in little-endian mode. + 2013-06-11 Jakub Jelinek PR target/56564 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 3646c6d9579b..54dc0cee2ccf 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -17881,8 +17881,9 @@ rs6000_adjust_atomic_subword (rtx orig_mem, rtx *pshift, rtx *pmask) shift = gen_reg_rtx (SImode); addr = gen_lowpart (SImode, addr); emit_insn (gen_rlwinm (shift, addr, GEN_INT (3), GEN_INT (shift_mask))); - shift = expand_simple_binop (SImode, XOR, shift, GEN_INT (shift_mask), - shift, 1, OPTAB_LIB_WIDEN); + if (WORDS_BIG_ENDIAN) + shift = expand_simple_binop (SImode, XOR, shift, GEN_INT (shift_mask), + shift, 1, OPTAB_LIB_WIDEN); *pshift = shift; /* Mask for insertion. */