From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2181) id 5F4E33858D34; Thu, 2 Jul 2020 18:58:10 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5F4E33858D34 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1593716290; bh=1FscFr/eNXTOr6OK4L4gRNPvLwd+5oprHAEY858ufDc=; h=From:To:Subject:Date:From; b=XE9a3NJJyAFOQvg6TKmhM8nDV0NTL5HPuyBYIJxk/oyD7545lwDhjk6NfpVzlAxk+ JkWL++yBV4ZE45/QmQg/pjRB3SaQjiJtm2frXgxdW6h9HC7+Qo0EdzkJ+d8ZbRny/j XIX1jgxf6GM8lpxyqMTS05RKE2Z2x1MNxgNCQcPM= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Jonathan Wakely To: gcc-cvs@gcc.gnu.org, libstdc++-cvs@gcc.gnu.org Subject: [gcc r10-8416] libstdc++: Fix atomic tests (PR 91153, PR 93224) X-Act-Checkin: gcc X-Git-Author: Jonathan Wakely X-Git-Refname: refs/heads/releases/gcc-10 X-Git-Oldrev: 41b504e91e5cd0fdce36b7306ce42dd592c401f2 X-Git-Newrev: 14d4e7bc303a92f620eddcba9cef88da7e91514c Message-Id: <20200702185810.5F4E33858D34@sourceware.org> Date: Thu, 2 Jul 2020 18:58:10 +0000 (GMT) X-BeenThere: libstdc++-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libstdc++-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 Jul 2020 18:58:10 -0000 https://gcc.gnu.org/g:14d4e7bc303a92f620eddcba9cef88da7e91514c commit r10-8416-g14d4e7bc303a92f620eddcba9cef88da7e91514c Author: Jonathan Wakely Date: Thu Jul 2 17:11:10 2020 +0000 libstdc++: Fix atomic tests (PR 91153, PR 93224) These tests fail with AIX double double. Use different floating point values that behave less surprisingly. libstdc++-v3/ChangeLog: PR libstdc++/91153 PR target/93224 * testsuite/29_atomics/atomic_float/1.cc: Use different values for tests. * testsuite/29_atomics/atomic_ref/float.cc: Likewise. (cherry picked from commit c6f431bba531bac3212b66069cf0f9718edf0132) Diff: --- .../testsuite/29_atomics/atomic_float/1.cc | 86 +++++++++++----------- .../testsuite/29_atomics/atomic_ref/float.cc | 45 +++++------ 2 files changed, 67 insertions(+), 64 deletions(-) diff --git a/libstdc++-v3/testsuite/29_atomics/atomic_float/1.cc b/libstdc++-v3/testsuite/29_atomics/atomic_float/1.cc index cf80c84bbb9..a38b040ee8f 100644 --- a/libstdc++-v3/testsuite/29_atomics/atomic_float/1.cc +++ b/libstdc++-v3/testsuite/29_atomics/atomic_float/1.cc @@ -453,27 +453,28 @@ test03() ok = a1.compare_exchange_strong(expected, 3.2l, mo); VERIFY( !ok && a1.load() == 2.56l && expected == 2.56l ); - f0 = a0.fetch_add(1.2l); - VERIFY( f0 == 12.8l ); - VERIFY( a0 == 14.0l ); - f1 = a1.fetch_add(2.4l, mo); - VERIFY( f1 == 2.56l ); - VERIFY( a1 == 4.96l ); - - f0 = a0.fetch_sub(1.2l); - VERIFY( f0 == 14.0l ); - VERIFY( a0 == 12.8l ); - f1 = a1.fetch_sub(3.5l, mo); - VERIFY( f1 == 4.96l ); - VERIFY( a1 == 1.46l ); - - f0 = a0 += 1.2l; - VERIFY( f0 == 14.0l ); - VERIFY( a0 == 14.0l ); - - f0 = a0 -= 0.8l; - VERIFY( f0 == 13.2l ); - VERIFY( a0 == 13.2l ); + a1 = a0 = 0.5l; + f0 = a0.fetch_add(0.25l); + VERIFY( f0 == 0.5l ); + VERIFY( a0 == 0.75l ); + f1 = a1.fetch_add(0.25l, mo); + VERIFY( f1 == 0.5l ); + VERIFY( a1 == 0.75l ); + + f0 = a0.fetch_sub(0.5l); + VERIFY( f0 == 0.75l ); + VERIFY( a0 == 0.25l ); + f1 = a1.fetch_sub(0.5l, mo); + VERIFY( f1 == 0.75l ); + VERIFY( a1 == 0.25l ); + + f0 = a0 += 0.75l; + VERIFY( f0 == 1.0l ); + VERIFY( a0 == 1.0l ); + + f0 = a0 -= 0.5l; + VERIFY( f0 == 0.5l ); + VERIFY( a0 == 0.5l ); } // Repeat for volatile std::atomic @@ -540,27 +541,28 @@ test03() ok = a1.compare_exchange_strong(expected, 3.2l, mo); VERIFY( !ok && a1.load() == 2.56l && expected == 2.56l ); - f0 = a0.fetch_add(1.2l); - VERIFY( f0 == 12.8l ); - VERIFY( a0 == 14.0l ); - f1 = a1.fetch_add(2.4l, mo); - VERIFY( f1 == 2.56l ); - VERIFY( a1 == 4.96l ); - - f0 = a0.fetch_sub(1.2l); - VERIFY( f0 == 14.0l ); - VERIFY( a0 == 12.8l ); - f1 = a1.fetch_sub(3.5l, mo); - VERIFY( f1 == 4.96l ); - VERIFY( a1 == 1.46l ); - - f0 = a0 += 1.2l; - VERIFY( f0 == 14.0l ); - VERIFY( a0 == 14.0l ); - - f0 = a0 -= 0.8l; - VERIFY( f0 == 13.2l ); - VERIFY( a0 == 13.2l ); + a1 = a0 = 0.5l; + f0 = a0.fetch_add(0.25l); + VERIFY( f0 == 0.5l ); + VERIFY( a0 == 0.75l ); + f1 = a1.fetch_add(0.25l, mo); + VERIFY( f1 == 0.5l ); + VERIFY( a1 == 0.75l ); + + f0 = a0.fetch_sub(0.5l); + VERIFY( f0 == 0.75l ); + VERIFY( a0 == 0.25l ); + f1 = a1.fetch_sub(0.5l, mo); + VERIFY( f1 == 0.75l ); + VERIFY( a1 == 0.25l ); + + f0 = a0 += 0.75l; + VERIFY( f0 == 1.0l ); + VERIFY( a0 == 1.0l ); + + f0 = a0 -= 0.5l; + VERIFY( f0 == 0.5l ); + VERIFY( a0 == 0.5l ); } } diff --git a/libstdc++-v3/testsuite/29_atomics/atomic_ref/float.cc b/libstdc++-v3/testsuite/29_atomics/atomic_ref/float.cc index 0aee9ceedcf..4726a14f9ca 100644 --- a/libstdc++-v3/testsuite/29_atomics/atomic_ref/float.cc +++ b/libstdc++-v3/testsuite/29_atomics/atomic_ref/float.cc @@ -267,31 +267,32 @@ test03() ok = a.compare_exchange_strong(expected, 6.4l, mo); VERIFY( !ok && a.load() == 204.8l && expected == 204.8l ); - v = a.fetch_add(3.2l); - VERIFY( v == 204.8l ); - VERIFY( a == 208.0l ); - v = a.fetch_add(-8.5l, mo); - VERIFY( v == 208.0l ); - VERIFY( a == 199.5l ); - - v = a.fetch_sub(109.5l); - VERIFY( v == 199.5l ); - VERIFY( a == 90.0l ); - v = a.fetch_sub(2, mo); - VERIFY( v == 90.0l ); - VERIFY( a == 88.0l ); - - v = a += 5.0l; - VERIFY( v == 93.0l ); - VERIFY( a == 93.0l ); - - v = a -= 6.5l; - VERIFY( v == 86.5l ); - VERIFY( a == 86.5l ); + a = 0.5l; + v = a.fetch_add(0.5l); + VERIFY( v == 0.5l ); + VERIFY( a == 1.0l ); + v = a.fetch_add(-0.2l, mo); + VERIFY( v == 1.0l ); + VERIFY( a == 0.8l ); + + v = a.fetch_sub(0.4l); + VERIFY( v == 0.8l ); + VERIFY( a == 0.4l ); + v = a.fetch_sub(-0.4l, mo); + VERIFY( v == 0.4l ); + VERIFY( a == 0.8l ); + + v = a += .8l; + VERIFY( v == 1.6l ); + VERIFY( a == 1.6l ); + + v = a -= 0.6l; + VERIFY( v == 1.0l ); + VERIFY( a == 1.0l ); } if constexpr (std::atomic_ref::is_always_lock_free) - VERIFY( value == 86.5l ); + VERIFY( value == 1.0l ); } void