From: Richard Henderson Date: Thu, 17 Nov 2011 22:12:31 +0000 (-0800) Subject: Merge branch 'rth/atomic/ppc' X-Git-Tag: releases/gcc-4.7.0~2130 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f6d9912f6b30e4880183dbafdc61cd3765269d2e;p=thirdparty%2Fgcc.git Merge branch 'rth/atomic/ppc' From-SVN: r181459 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2368d46bf53a..1066aae88000 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -14,6 +14,12 @@ * builtins.c (expand_builtin): Remove 4th parameter representing weak/strong mode when __atomic_compare_exchange becomes a library call. +2011-11-17 Richard Henderson + + * config/rs6000/rs6000.c (rs6000_expand_atomic_compare_and_swap): Get + new pseudo for target after convert_modes. + (rs6000_expand_atomic_exchange, rs6000_expand_atomic_op): Likewise. + 2011-11-17 Richard Henderson * builtins.c (expand_builtin_mem_thread_fence): Remove. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 89c2ea088b7b..f01353b89423 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -17341,12 +17341,12 @@ rs6000_expand_atomic_compare_and_swap (rtx operands[]) /* Shift and mask OLDVAL into position with the word. */ oldval = convert_modes (SImode, mode, oldval, 1); oldval = expand_simple_binop (SImode, ASHIFT, oldval, shift, - oldval, 1, OPTAB_LIB_WIDEN); + NULL_RTX, 1, OPTAB_LIB_WIDEN); /* Shift and mask NEWVAL into position within the word. */ newval = convert_modes (SImode, mode, newval, 1); newval = expand_simple_binop (SImode, ASHIFT, newval, shift, - newval, 1, OPTAB_LIB_WIDEN); + NULL_RTX, 1, OPTAB_LIB_WIDEN); /* Prepare to adjust the return value. */ retval = gen_reg_rtx (SImode); @@ -17434,7 +17434,7 @@ rs6000_expand_atomic_exchange (rtx operands[]) /* Shift and mask VAL into position with the word. */ val = convert_modes (SImode, mode, val, 1); val = expand_simple_binop (SImode, ASHIFT, val, shift, - val, 1, OPTAB_LIB_WIDEN); + NULL_RTX, 1, OPTAB_LIB_WIDEN); /* Prepare to adjust the return value. */ retval = gen_reg_rtx (SImode); @@ -17487,7 +17487,7 @@ rs6000_expand_atomic_op (enum rtx_code code, rtx mem, rtx val, /* Shift and mask VAL into position with the word. */ val = convert_modes (SImode, mode, val, 1); val = expand_simple_binop (SImode, ASHIFT, val, shift, - val, 1, OPTAB_LIB_WIDEN); + NULL_RTX, 1, OPTAB_LIB_WIDEN); switch (code) {