From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2181) id DBA8538582AD; Fri, 16 Sep 2022 20:19:57 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org DBA8538582AD DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1663359597; bh=0R3MIuQcymmoCJWWlHVhFtlOKXHItTzY8IPuIoCVEww=; h=From:To:Subject:Date:From; b=L3yyEOusgnJjTH/Kj0fsJx1gMDMERYBNk5NV4kTSYC/41f5ZPt9f8iAwmXTkR4yyq wd1hePdZk4emqytlGOqI1fATndnWsTYsKTnJ9nvqjFFF5+0c8dUjgmQyuAWCKm8Jah TylBGFb7z8bTLT+huDXd6dpSXK7cuKG+37BPviSU= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Jonathan Wakely To: gcc-cvs@gcc.gnu.org, libstdc++-cvs@gcc.gnu.org Subject: [gcc r13-2702] libstdc++: Fix compare_exchange_padding.cc test for std::atomic_ref X-Act-Checkin: gcc X-Git-Author: Jonathan Wakely X-Git-Refname: refs/heads/master X-Git-Oldrev: 7107ea6fb933f1e928593c7e92edfd64ccf0df63 X-Git-Newrev: 47deb1ef874c078ac51bc1970a3324f5c8002815 Message-Id: <20220916201957.DBA8538582AD@sourceware.org> Date: Fri, 16 Sep 2022 20:19:57 +0000 (GMT) List-Id: https://gcc.gnu.org/g:47deb1ef874c078ac51bc1970a3324f5c8002815 commit r13-2702-g47deb1ef874c078ac51bc1970a3324f5c8002815 Author: Jonathan Wakely Date: Fri Sep 16 17:50:21 2022 +0100 libstdc++: Fix compare_exchange_padding.cc test for std::atomic_ref This test was written assuming that std::atomic_ref clears its target's padding on construction, but that could introduce data races. Change the test to store a value after construction and check that its padding is cleared by the store. libstdc++-v3/ChangeLog: * testsuite/29_atomics/atomic_ref/compare_exchange_padding.cc: Store value with non-zero padding bits after construction. Diff: --- .../29_atomics/atomic_ref/compare_exchange_padding.cc | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/libstdc++-v3/testsuite/29_atomics/atomic_ref/compare_exchange_padding.cc b/libstdc++-v3/testsuite/29_atomics/atomic_ref/compare_exchange_padding.cc index 1b1a12dddda..e9f8a4bdf2a 100644 --- a/libstdc++-v3/testsuite/29_atomics/atomic_ref/compare_exchange_padding.cc +++ b/libstdc++-v3/testsuite/29_atomics/atomic_ref/compare_exchange_padding.cc @@ -20,14 +20,15 @@ int main () { S s; - fill_struct(s); - s.c = 'a'; - s.s = 42; - S ss{ s }; + fill_struct(ss); + ss.c = 'a'; + ss.s = 42; + std::atomic_ref as{ s }; + as.store(ss); auto ts = as.load(); - VERIFY( !compare_struct(ss, ts) ); // padding cleared on construction + VERIFY( !compare_struct(ss, ts) ); // padding cleared on store as.exchange(ss); auto es = as.load(); VERIFY( compare_struct(ts, es) ); // padding cleared on exchange