re PR target/35498 (libgomp/testsuite/libgomp.c/atomic-3.c fails on ppc-linux)
authorJakub Jelinek <jakub@redhat.com>
Sat, 8 Mar 2008 07:30:55 +0000 (08:30 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Sat, 8 Mar 2008 07:30:55 +0000 (08:30 +0100)
PR target/35498
* config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift
wdst back after sync_compare_and_swapqhi_internal.

From-SVN: r133024

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index 1ffe9d59b98f179e3800b214fe1217ed430c1d76..39945f5180745295ac168d0b70e18fb6b6da7d66 100644 (file)
@@ -1,3 +1,9 @@
+2008-03-08  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/35498
+       * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift
+       wdst back after sync_compare_and_swapqhi_internal.
+
 2008-03-08  Uros Bizjak  <ubizjak@gmail.com>
 
        PR target/22152
index a9797998adafa7edda70a087996460a700bbb24b..5204a555452d6719ebeecdcfcfe27e80a1cbcd2a 100644 (file)
@@ -13903,6 +13903,9 @@ rs6000_expand_compare_and_swapqhi (rtx dst, rtx mem, rtx oldval, rtx newval)
   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));
 }