2008-03-07 Jakub Jelinek PR target/35498 * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift wdst back after sync_compare_and_swapqhi_internal. --- gcc/config/rs6000/rs6000.c.jj 2008-02-29 09:11:54.000000000 +0100 +++ gcc/config/rs6000/rs6000.c 2008-03-07 17:22:27.000000000 +0100 @@ -13858,6 +13858,9 @@ rs6000_expand_compare_and_swapqhi (rtx d emit_insn (gen_sync_compare_and_swapqhi_internal (wdst, mask, oldval, newval, mem)); + /* Shift the result back. */ + emit_insn (gen_lshrsi3 (wdst, wdst, shift)); + emit_move_insn (dst, gen_lowpart (mode, wdst)); }