libstd++: Only support atomic_ref::wait tests which are always lockfree
authorThomas Rodgers <rodgert@appliantology.com>
Wed, 9 Jun 2021 20:44:31 +0000 (13:44 -0700)
committerThomas Rodgers <rodgert@appliantology.com>
Wed, 9 Jun 2021 20:46:03 +0000 (13:46 -0700)
Fixes a regression on arm32 targets.

libstdc++-v3/ChangeLog:
* testsuite/29_atomics/atomic_ref/wait_notify.cc: Guard
test logic with constexpr check for is_always_lock_free.

libstdc++-v3/testsuite/29_atomics/atomic_ref/wait_notify.cc

index 003b86c..b75e276 100644 (file)
@@ -30,17 +30,20 @@ template<typename S>
   void
   test (S va, S vb)
   {
-    S aa{ va };
-    S bb{ vb };
-    std::atomic_ref<S> a{ aa };
-    a.wait(bb);
-    std::thread t([&]
-      {
-       a.store(bb);
-       a.notify_one();
-      });
-    a.wait(aa);
-    t.join();
+    if constexpr (std::atomic_ref<S>::is_always_lock_free)
+    {
+      S aa{ va };
+      S bb{ vb };
+      std::atomic_ref<S> a{ aa };
+      a.wait(bb);
+      std::thread t([&]
+        {
+         a.store(bb);
+         a.notify_one();
+        });
+      a.wait(aa);
+      t.join();
+    }
   }
 
 int