From 2725b75c3397530b2fdb9fc9e8123eb95c5ae748 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 8 Mar 2008 08:30:55 +0100 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/config/rs6000/rs6000.c | 3 +++ 2 files changed, 9 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1ffe9d59b98..39945f51807 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2008-03-08 Jakub Jelinek + + 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 PR target/22152 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index a9797998ada..5204a555452 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)); } -- 2.30.2