aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2008-03-08 08:30:55 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2008-03-08 08:30:55 +0100
commit2725b75c3397530b2fdb9fc9e8123eb95c5ae748 (patch)
treefb62f81583707b3d71b5dba27f94903f0c7e4de1
parent10a97ae6f1f6e29beb258157ebaf04c54172bddb (diff)
downloadgcc-2725b75c3397530b2fdb9fc9e8123eb95c5ae748.zip
gcc-2725b75c3397530b2fdb9fc9e8123eb95c5ae748.tar.gz
gcc-2725b75c3397530b2fdb9fc9e8123eb95c5ae748.tar.bz2
re PR target/35498 (libgomp/testsuite/libgomp.c/atomic-3.c fails on ppc-linux)
PR target/35498 * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift wdst back after sync_compare_and_swapqhi_internal. From-SVN: r133024
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/rs6000/rs6000.c3
2 files changed, 9 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1ffe9d5..39945f5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index a979799..5204a55 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -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));
}