diff options
| author | Eric Fiselier <eric@efcs.ca> | 2015-08-19 17:37:34 +0000 |
|---|---|---|
| committer | Eric Fiselier <eric@efcs.ca> | 2015-08-19 17:37:34 +0000 |
| commit | 92499e455eae105178ff7e084456b3205a310c54 (patch) | |
| tree | 61724cd0d55a34d2e97659fd1ce7239ff3829bbb /libcxx/test/support/test_atomic.h | |
| parent | 0fc7892b772800b43c2f77ab0efb40f362af2584 (diff) | |
| download | bcm5719-llvm-92499e455eae105178ff7e084456b3205a310c54.tar.gz bcm5719-llvm-92499e455eae105178ff7e084456b3205a310c54.zip | |
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.
llvm-svn: 245468
Diffstat (limited to 'libcxx/test/support/test_atomic.h')
| -rw-r--r-- | libcxx/test/support/test_atomic.h | 109 |
1 files changed, 0 insertions, 109 deletions
diff --git a/libcxx/test/support/test_atomic.h b/libcxx/test/support/test_atomic.h deleted file mode 100644 index 13a0b20250a..00000000000 --- a/libcxx/test/support/test_atomic.h +++ /dev/null @@ -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 |

