diff options
Diffstat (limited to 'lib/tsan/lit_tests/atomic_norace.cc')
-rw-r--r-- | lib/tsan/lit_tests/atomic_norace.cc | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/lib/tsan/lit_tests/atomic_norace.cc b/lib/tsan/lit_tests/atomic_norace.cc deleted file mode 100644 index 265459b0758e..000000000000 --- a/lib/tsan/lit_tests/atomic_norace.cc +++ /dev/null @@ -1,61 +0,0 @@ -// RUN: %clangxx_tsan -O1 %s -o %t && %t 2>&1 | FileCheck %s -#include <pthread.h> -#include <stdio.h> -#include <unistd.h> - -const int kTestCount = 4; -typedef long long T; -T atomics[kTestCount * 2]; - -void Test(int test, T *p, bool main_thread) { - volatile T sink; - if (test == 0) { - if (main_thread) - __atomic_fetch_add(p, 1, __ATOMIC_RELAXED); - else - __atomic_fetch_add(p, 1, __ATOMIC_RELAXED); - } else if (test == 1) { - if (main_thread) - __atomic_exchange_n(p, 1, __ATOMIC_ACQ_REL); - else - __atomic_exchange_n(p, 1, __ATOMIC_ACQ_REL); - } else if (test == 2) { - if (main_thread) - sink = __atomic_load_n(p, __ATOMIC_SEQ_CST); - else - __atomic_store_n(p, 1, __ATOMIC_SEQ_CST); - } else if (test == 3) { - if (main_thread) - sink = __atomic_load_n(p, __ATOMIC_SEQ_CST); - else - sink = *p; - } -} - -void *Thread(void *p) { - for (int i = 0; i < kTestCount; i++) { - Test(i, &atomics[i], false); - } - sleep(2); - for (int i = 0; i < kTestCount; i++) { - fprintf(stderr, "Test %d reverse\n", i); - Test(i, &atomics[kTestCount + i], false); - } - return 0; -} - -int main() { - pthread_t t; - pthread_create(&t, 0, Thread, 0); - sleep(1); - for (int i = 0; i < kTestCount; i++) { - fprintf(stderr, "Test %d\n", i); - Test(i, &atomics[i], true); - } - for (int i = 0; i < kTestCount; i++) { - Test(i, &atomics[kTestCount + i], true); - } - pthread_join(t, 0); -} - -// CHECK-NOT: ThreadSanitizer: data race |