[gcc(refs/users/giulianob/heads/autopar_rebase2)] libstdc++: Improve tests for std::atomic_flag

Giuliano Belinassi giulianob@gcc.gnu.org
Mon Aug 17 23:40:29 GMT 2020


https://gcc.gnu.org/g:add2228345b59f73f72c839ea6be970079193ae0

commit add2228345b59f73f72c839ea6be970079193ae0
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Fri Jun 12 10:33:37 2020 +0100

    libstdc++: Improve tests for std::atomic_flag
    
    The tests for clear() and test_and_set() didn't cover all cases.
    
            * testsuite/29_atomics/atomic_flag/clear/1.cc: Also test clear()
            when the value is currently set.
            * testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc:
            Actually check the return value.
            * testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc:
            Likewise.

Diff:
---
 libstdc++-v3/testsuite/29_atomics/atomic_flag/clear/1.cc          | 8 ++++----
 .../testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc     | 7 +++----
 .../testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc     | 7 +++----
 3 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/libstdc++-v3/testsuite/29_atomics/atomic_flag/clear/1.cc b/libstdc++-v3/testsuite/29_atomics/atomic_flag/clear/1.cc
index 30d9075e372..ed5d11a5292 100644
--- a/libstdc++-v3/testsuite/29_atomics/atomic_flag/clear/1.cc
+++ b/libstdc++-v3/testsuite/29_atomics/atomic_flag/clear/1.cc
@@ -25,9 +25,9 @@ int main()
 {
   std::atomic_flag f = ATOMIC_FLAG_INIT;
 
-  f.clear(); // set to false
+  f.clear();                           // set to false
+  VERIFY( false == f.test_and_set() ); // return true
+  VERIFY( true == f.test_and_set() );  // return true
+  f.clear();                           // set to false
   VERIFY( false == f.test_and_set() ); // return previous false, set to true
-  VERIFY( true == f.test_and_set() ); // return true
-
-  return 0;
 }
diff --git a/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc b/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc
index 5d6dbcc98a2..1934854d7f7 100644
--- a/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc
+++ b/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc
@@ -19,14 +19,13 @@
 // <http://www.gnu.org/licenses/>.
 
 #include <atomic>
+#include <testsuite_hooks.h>
 
 int main()
 {
   using namespace std;
   atomic_flag af = ATOMIC_FLAG_INIT;
 
-  if (!af.test_and_set(memory_order_acquire))
-    af.clear(memory_order_release);
-
-  return 0;
+  VERIFY( ! af.test_and_set(memory_order_acquire) );
+  VERIFY( af.test_and_set(memory_order_acquire) );
 }
diff --git a/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc b/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc
index 8e1284cd299..1934854d7f7 100644
--- a/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc
+++ b/libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc
@@ -19,14 +19,13 @@
 // <http://www.gnu.org/licenses/>.
 
 #include <atomic>
+#include <testsuite_hooks.h>
 
 int main()
 {
   using namespace std;
   atomic_flag af = ATOMIC_FLAG_INIT;
 
-  if (!af.test_and_set())
-    af.clear();
-
-  return 0;
+  VERIFY( ! af.test_and_set(memory_order_acquire) );
+  VERIFY( af.test_and_set(memory_order_acquire) );
 }


More information about the Libstdc++-cvs mailing list