[libcxx] r245468 - Remove test_atomic.h header

Eric Fiselier via cfe-commits cfe-commits at lists.llvm.org
Wed Aug 19 10:37:34 PDT 2015


Author: ericwf
Date: Wed Aug 19 12:37:34 2015
New Revision: 245468

URL: http://llvm.org/viewvc/llvm-project?rev=245468&view=rev
Log:
Remove test_atomic.h header

Because <atomic> can now be used in C++03 there is no need for the test_atomic.h header.
This commit removes the header and converts all usages to use <atomic> instead.

Removed:
    libcxx/trunk/test/support/test_atomic.h
Modified:
    libcxx/trunk/test/std/thread/thread.condition/thread.condition.condvar/notify_one.pass.cpp
    libcxx/trunk/test/std/thread/thread.condition/thread.condition.condvarany/wait_terminates.sh.cpp
    libcxx/trunk/test/std/thread/thread.threads/thread.thread.class/thread.thread.member/detach.pass.cpp

Modified: libcxx/trunk/test/std/thread/thread.condition/thread.condition.condvar/notify_one.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/thread/thread.condition/thread.condition.condvar/notify_one.pass.cpp?rev=245468&r1=245467&r2=245468&view=diff
==============================================================================
--- libcxx/trunk/test/std/thread/thread.condition/thread.condition.condvar/notify_one.pass.cpp (original)
+++ libcxx/trunk/test/std/thread/thread.condition/thread.condition.condvar/notify_one.pass.cpp Wed Aug 19 12:37:34 2015
@@ -16,17 +16,17 @@
 // void notify_one();
 
 #include <condition_variable>
+#include <atomic>
 #include <mutex>
 #include <thread>
 #include <cassert>
 
-#include "test_atomic.h"
 
 std::condition_variable cv;
 std::mutex mut;
 
-AtomicInt test1(0);
-AtomicInt test2(0);
+std::atomic_int test1(0);
+std::atomic_int test2(0);
 
 void f1()
 {

Modified: libcxx/trunk/test/std/thread/thread.condition/thread.condition.condvarany/wait_terminates.sh.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/thread/thread.condition/thread.condition.condvarany/wait_terminates.sh.cpp?rev=245468&r1=245467&r2=245468&view=diff
==============================================================================
--- libcxx/trunk/test/std/thread/thread.condition/thread.condition.condvarany/wait_terminates.sh.cpp (original)
+++ libcxx/trunk/test/std/thread/thread.condition/thread.condition.condvarany/wait_terminates.sh.cpp Wed Aug 19 12:37:34 2015
@@ -56,14 +56,13 @@
 
 
 #include <condition_variable>
+#include <atomic>
 #include <thread>
 #include <chrono>
 #include <string>
 #include <cstdlib>
 #include <cassert>
 
-#include "test_atomic.h"
-
 void my_terminate() {
   std::_Exit(0); // Use _Exit to prevent cleanup from taking place.
 }
@@ -76,12 +75,14 @@ bool pred_function() {
 
 class ThrowingMutex
 {
-  AtomicBool locked;
+  std::atomic_bool locked;
   unsigned state = 0;
   ThrowingMutex(const ThrowingMutex&) = delete;
   ThrowingMutex& operator=(const ThrowingMutex&) = delete;
 public:
-  ThrowingMutex() = default;
+  ThrowingMutex() {
+    locked = false;
+  }
   ~ThrowingMutex() = default;
 
   void lock() {

Modified: libcxx/trunk/test/std/thread/thread.threads/thread.thread.class/thread.thread.member/detach.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/thread/thread.threads/thread.thread.class/thread.thread.member/detach.pass.cpp?rev=245468&r1=245467&r2=245468&view=diff
==============================================================================
--- libcxx/trunk/test/std/thread/thread.threads/thread.thread.class/thread.thread.member/detach.pass.cpp (original)
+++ libcxx/trunk/test/std/thread/thread.threads/thread.thread.class/thread.thread.member/detach.pass.cpp Wed Aug 19 12:37:34 2015
@@ -16,11 +16,10 @@
 // void detach();
 
 #include <thread>
+#include <atomic>
 #include <cassert>
 
-#include "test_atomic.h"
-
-AtomicBool done(false);
+std::atomic_bool done(false);
 
 class G
 {

Removed: libcxx/trunk/test/support/test_atomic.h
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/support/test_atomic.h?rev=245467&view=auto
==============================================================================
--- libcxx/trunk/test/support/test_atomic.h (original)
+++ libcxx/trunk/test/support/test_atomic.h (removed)
@@ -1,109 +0,0 @@
-#ifndef SUPPORT_TEST_ATOMIC_H
-#define SUPPORT_TEST_ATOMIC_H
-
-// If the atomic memory order macros are defined then assume
-// the compiler supports the required atomic builtins.
-#if !defined(__ATOMIC_SEQ_CST)
-#define TEST_HAS_NO_ATOMICS
-#endif
-
-template <class ValType>
-class Atomic {
-   ValType value;
-   Atomic(Atomic const&);
-   Atomic& operator=(Atomic const&);
-   Atomic& operator=(Atomic const&) volatile;
-private:
-  enum {
-#if !defined(TEST_HAS_NO_ATOMICS)
-    AO_Relaxed = __ATOMIC_RELAXED,
-    AO_Seq     = __ATOMIC_SEQ_CST
-#else
-    AO_Relaxed,
-    AO_Seq
-#endif
-  };
-  template <class Tp, class FromType>
-  static inline void atomic_store_imp(Tp* dest, FromType from, int order = AO_Seq) {
-#if !defined(TEST_HAS_NO_ATOMICS)
-      __atomic_store_n(dest, from, order);
-#else
-    *dest = from;
-#endif
-  }
-
-  template <class Tp>
-  static inline Tp atomic_load_imp(Tp* from, int order = AO_Seq) {
-#if !defined(TEST_HAS_NO_ATOMICS)
-    return __atomic_load_n(from, order);
-#else
-    return *from;
-#endif
-  }
-
-  template <class Tp, class AddType>
-  static inline Tp atomic_add_imp(Tp* val, AddType add, int order = AO_Seq) {
-#if !defined(TEST_HAS_NO_ATOMICS)
-      return __atomic_add_fetch(val, add, order);
-#else
-    return *val += add;
-#endif
-  }
-
-  template <class Tp>
-  static inline Tp atomic_exchange_imp(Tp* val, Tp other, int order = AO_Seq) {
-#if !defined(TEST_HAS_NO_ATOMICS)
-      return __atomic_exchange_n(val, other, order);
-#else
-      Tp old = *val;
-      *val = other;
-      return old;
-#endif
-  }
-public:
-    Atomic() : value(0) {}
-    Atomic(ValType x) : value(x) {}
-
-    ValType operator=(ValType val) {
-       atomic_store_imp(&value, val);
-       return val;
-    }
-
-    ValType operator=(ValType val) volatile {
-        atomic_store_imp(&value, val);
-        return val;
-    }
-
-    ValType load() const volatile { return atomic_load_imp(&value); }
-    void    store(ValType val) volatile { atomic_store_imp(&value, val); }
-
-    ValType relaxedLoad() const volatile { return atomic_load_imp(&value, AO_Relaxed); }
-    void    relaxedStore(ValType val) volatile { atomic_store_imp(&value, val, AO_Relaxed); }
-
-    ValType exchange(ValType other) volatile { return atomic_exchange_imp(&value, other); }
-    bool    testAndSet() volatile { return atomic_exchange_imp(&value, 1); }
-    void    clear() volatile { atomic_store_imp(&value, 0); }
-
-    operator ValType() const { return atomic_load_imp(&value); }
-    operator ValType() const volatile { return atomic_load_imp(&value); }
-
-    ValType operator+=(ValType val)  { return atomic_add_imp(&value, val); }
-    ValType operator-=(ValType val)  { return atomic_add_imp(&value, -val); }
-    ValType operator+=(ValType val) volatile { return atomic_add_imp(&value, val); }
-    ValType operator-=(ValType val) volatile { return atomic_add_imp(&value, -val); }
-
-    ValType operator++()  { return *this += 1; }
-    ValType operator++(int) { return (*this += 1) - 1;  }
-    ValType operator++() volatile { return *this += 1; }
-    ValType operator++(int) volatile { return (*this += 1) - 1;  }
-
-    ValType operator--() { return *this -= 1; }
-    ValType operator--(int) { return (*this -= 1) + 1; }
-    ValType operator--() volatile { return *this -= 1; }
-    ValType operator--(int) volatile { return (*this -= 1) + 1; }
-};
-
-typedef Atomic<int> AtomicInt;
-typedef Atomic<bool> AtomicBool;
-
-#endif // SUPPORT_TEST_ATOMIC_H




More information about the cfe-commits mailing list