summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/tsan/output_tests
diff options
context:
space:
mode:
authorAlexey Samsonov <samsonov@google.com>2012-09-18 07:23:54 +0000
committerAlexey Samsonov <samsonov@google.com>2012-09-18 07:23:54 +0000
commit341e5bcb45c9aeab3584d0aaa07a814282ebbefc (patch)
treeaa4c489f05f13095b7d68d15a1ec93c5da516eb8 /compiler-rt/lib/tsan/output_tests
parent7ecfa6d9603e09d5fa3eda0d25d72f07b568b47f (diff)
downloadbcm5719-llvm-341e5bcb45c9aeab3584d0aaa07a814282ebbefc.tar.gz
bcm5719-llvm-341e5bcb45c9aeab3584d0aaa07a814282ebbefc.zip
[TSan] port all output tests to lit and move them to lit_tests directory. This makes 'make check-tsan' command test both unit and output TSan tests. Old custom makefiles for running TSan tests are still functional as well.
llvm-svn: 164110
Diffstat (limited to 'compiler-rt/lib/tsan/output_tests')
-rw-r--r--compiler-rt/lib/tsan/output_tests/free_race.c43
-rw-r--r--compiler-rt/lib/tsan/output_tests/free_race2.c26
-rw-r--r--compiler-rt/lib/tsan/output_tests/heap_race.cc19
-rw-r--r--compiler-rt/lib/tsan/output_tests/memcpy_race.cc40
-rw-r--r--compiler-rt/lib/tsan/output_tests/mop_with_offset.cc36
-rw-r--r--compiler-rt/lib/tsan/output_tests/mop_with_offset2.cc36
-rw-r--r--compiler-rt/lib/tsan/output_tests/mutex_destroy_locked.cc29
-rw-r--r--compiler-rt/lib/tsan/output_tests/race_on_barrier.c31
-rw-r--r--compiler-rt/lib/tsan/output_tests/race_on_barrier2.c30
-rw-r--r--compiler-rt/lib/tsan/output_tests/race_on_heap.cc46
-rw-r--r--compiler-rt/lib/tsan/output_tests/race_on_mutex.c41
-rw-r--r--compiler-rt/lib/tsan/output_tests/race_with_finished_thread.cc43
-rw-r--r--compiler-rt/lib/tsan/output_tests/simple_race.c25
-rw-r--r--compiler-rt/lib/tsan/output_tests/simple_race.cc24
-rw-r--r--compiler-rt/lib/tsan/output_tests/simple_stack.c65
-rw-r--r--compiler-rt/lib/tsan/output_tests/simple_stack2.cc52
-rw-r--r--compiler-rt/lib/tsan/output_tests/sleep_sync.cc30
-rw-r--r--compiler-rt/lib/tsan/output_tests/sleep_sync2.cc21
-rw-r--r--compiler-rt/lib/tsan/output_tests/static_init1.cc25
-rw-r--r--compiler-rt/lib/tsan/output_tests/static_init2.cc31
-rw-r--r--compiler-rt/lib/tsan/output_tests/static_init3.cc46
-rw-r--r--compiler-rt/lib/tsan/output_tests/static_init4.cc35
-rw-r--r--compiler-rt/lib/tsan/output_tests/static_init5.cc40
-rw-r--r--compiler-rt/lib/tsan/output_tests/suppress_same_address.cc27
-rw-r--r--compiler-rt/lib/tsan/output_tests/suppress_same_stacks.cc27
-rwxr-xr-xcompiler-rt/lib/tsan/output_tests/test_output.sh49
-rw-r--r--compiler-rt/lib/tsan/output_tests/thread_leak.c15
-rw-r--r--compiler-rt/lib/tsan/output_tests/thread_leak2.c15
-rw-r--r--compiler-rt/lib/tsan/output_tests/thread_leak3.c14
-rw-r--r--compiler-rt/lib/tsan/output_tests/tiny_race.c14
-rw-r--r--compiler-rt/lib/tsan/output_tests/virtual_inheritance_compile_bug.cc13
-rw-r--r--compiler-rt/lib/tsan/output_tests/vptr_benign_race.cc50
-rw-r--r--compiler-rt/lib/tsan/output_tests/vptr_harmful_race.cc48
33 files changed, 0 insertions, 1086 deletions
diff --git a/compiler-rt/lib/tsan/output_tests/free_race.c b/compiler-rt/lib/tsan/output_tests/free_race.c
deleted file mode 100644
index fb7fbac77b0..00000000000
--- a/compiler-rt/lib/tsan/output_tests/free_race.c
+++ /dev/null
@@ -1,43 +0,0 @@
-#include <pthread.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <stddef.h>
-#include <unistd.h>
-
-int *mem;
-pthread_mutex_t mtx;
-
-void *Thread1(void *x) {
- pthread_mutex_lock(&mtx);
- free(mem);
- pthread_mutex_unlock(&mtx);
- return NULL;
-}
-
-void *Thread2(void *x) {
- usleep(1000000);
- pthread_mutex_lock(&mtx);
- mem[0] = 42;
- pthread_mutex_unlock(&mtx);
- return NULL;
-}
-
-int main() {
- mem = (int*)malloc(100);
- pthread_mutex_init(&mtx, 0);
- pthread_t t;
- pthread_create(&t, NULL, Thread1, NULL);
- Thread2(0);
- pthread_join(t, NULL);
- pthread_mutex_destroy(&mtx);
- return 0;
-}
-
-// CHECK: WARNING: ThreadSanitizer: heap-use-after-free
-// CHECK: Write of size 4 at {{.*}} by main thread:
-// CHECK: #0 Thread2
-// CHECK: #1 main
-// CHECK: Previous write of size 8 at {{.*}} by thread 1:
-// CHECK: #0 free
-// CHECK: #1 Thread1
-
diff --git a/compiler-rt/lib/tsan/output_tests/free_race2.c b/compiler-rt/lib/tsan/output_tests/free_race2.c
deleted file mode 100644
index 7b2bdec039e..00000000000
--- a/compiler-rt/lib/tsan/output_tests/free_race2.c
+++ /dev/null
@@ -1,26 +0,0 @@
-#include <stdlib.h>
-
-void __attribute__((noinline)) foo(int *mem) {
- free(mem);
-}
-
-void __attribute__((noinline)) bar(int *mem) {
- mem[0] = 42;
-}
-
-int main() {
- int *mem = (int*)malloc(100);
- foo(mem);
- bar(mem);
- return 0;
-}
-
-// CHECK: WARNING: ThreadSanitizer: heap-use-after-free
-// CHECK: Write of size 4 at {{.*}} by main thread:
-// CHECK: #0 bar
-// CHECK: #1 main
-// CHECK: Previous write of size 8 at {{.*}} by main thread:
-// CHECK: #0 free
-// CHECK: #1 foo
-// CHECK: #2 main
-
diff --git a/compiler-rt/lib/tsan/output_tests/heap_race.cc b/compiler-rt/lib/tsan/output_tests/heap_race.cc
deleted file mode 100644
index e92bb379737..00000000000
--- a/compiler-rt/lib/tsan/output_tests/heap_race.cc
+++ /dev/null
@@ -1,19 +0,0 @@
-#include <pthread.h>
-#include <stdio.h>
-#include <stddef.h>
-
-void *Thread(void *a) {
- ((int*)a)[0]++;
- return NULL;
-}
-
-int main() {
- int *p = new int(42);
- pthread_t t;
- pthread_create(&t, NULL, Thread, p);
- p[0]++;
- pthread_join(t, NULL);
- delete p;
-}
-
-// CHECK: WARNING: ThreadSanitizer: data race
diff --git a/compiler-rt/lib/tsan/output_tests/memcpy_race.cc b/compiler-rt/lib/tsan/output_tests/memcpy_race.cc
deleted file mode 100644
index c6b79a709e4..00000000000
--- a/compiler-rt/lib/tsan/output_tests/memcpy_race.cc
+++ /dev/null
@@ -1,40 +0,0 @@
-#include <pthread.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-
-char *data = new char[10];
-char *data1 = new char[10];
-char *data2 = new char[10];
-
-void *Thread1(void *x) {
- memcpy(data+5, data1, 1);
- return NULL;
-}
-
-void *Thread2(void *x) {
- usleep(500*1000);
- memcpy(data+3, data2, 4);
- return NULL;
-}
-
-int main() {
- fprintf(stderr, "addr=%p\n", &data[5]);
- pthread_t t[2];
- pthread_create(&t[0], NULL, Thread1, NULL);
- pthread_create(&t[1], NULL, Thread2, NULL);
- pthread_join(t[0], NULL);
- pthread_join(t[1], NULL);
- return 0;
-}
-
-// CHECK: addr=[[ADDR:0x[0-9,a-f]+]]
-// CHECK: WARNING: ThreadSanitizer: data race
-// CHECK: Write of size 1 at [[ADDR]] by thread 2:
-// CHECK: #0 memcpy
-// CHECK: #1 Thread2
-// CHECK: Previous write of size 1 at [[ADDR]] by thread 1:
-// CHECK: #0 memcpy
-// CHECK: #1 Thread1
-
diff --git a/compiler-rt/lib/tsan/output_tests/mop_with_offset.cc b/compiler-rt/lib/tsan/output_tests/mop_with_offset.cc
deleted file mode 100644
index fc497bfb4a7..00000000000
--- a/compiler-rt/lib/tsan/output_tests/mop_with_offset.cc
+++ /dev/null
@@ -1,36 +0,0 @@
-#include <pthread.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <unistd.h>
-
-void *Thread1(void *x) {
- int *p = (int*)x;
- p[0] = 1;
- return NULL;
-}
-
-void *Thread2(void *x) {
- usleep(500*1000);
- char *p = (char*)x;
- p[2] = 1;
- return NULL;
-}
-
-int main() {
- int *data = new int(42);
- fprintf(stderr, "ptr1=%p\n", data);
- fprintf(stderr, "ptr2=%p\n", (char*)data + 2);
- pthread_t t[2];
- pthread_create(&t[0], NULL, Thread1, data);
- pthread_create(&t[1], NULL, Thread2, data);
- pthread_join(t[0], NULL);
- pthread_join(t[1], NULL);
- delete data;
-}
-
-// CHECK: ptr1=[[PTR1:0x[0-9,a-f]+]]
-// CHECK: ptr2=[[PTR2:0x[0-9,a-f]+]]
-// CHECK: WARNING: ThreadSanitizer: data race
-// CHECK: Write of size 1 at [[PTR2]] by thread 2:
-// CHECK: Previous write of size 4 at [[PTR1]] by thread 1:
-
diff --git a/compiler-rt/lib/tsan/output_tests/mop_with_offset2.cc b/compiler-rt/lib/tsan/output_tests/mop_with_offset2.cc
deleted file mode 100644
index bbeda554929..00000000000
--- a/compiler-rt/lib/tsan/output_tests/mop_with_offset2.cc
+++ /dev/null
@@ -1,36 +0,0 @@
-#include <pthread.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <unistd.h>
-
-void *Thread1(void *x) {
- usleep(500*1000);
- int *p = (int*)x;
- p[0] = 1;
- return NULL;
-}
-
-void *Thread2(void *x) {
- char *p = (char*)x;
- p[2] = 1;
- return NULL;
-}
-
-int main() {
- int *data = new int(42);
- fprintf(stderr, "ptr1=%p\n", data);
- fprintf(stderr, "ptr2=%p\n", (char*)data + 2);
- pthread_t t[2];
- pthread_create(&t[0], NULL, Thread1, data);
- pthread_create(&t[1], NULL, Thread2, data);
- pthread_join(t[0], NULL);
- pthread_join(t[1], NULL);
- delete data;
-}
-
-// CHECK: ptr1=[[PTR1:0x[0-9,a-f]+]]
-// CHECK: ptr2=[[PTR2:0x[0-9,a-f]+]]
-// CHECK: WARNING: ThreadSanitizer: data race
-// CHECK: Write of size 4 at [[PTR1]] by thread 1:
-// CHECK: Previous write of size 1 at [[PTR2]] by thread 2:
-
diff --git a/compiler-rt/lib/tsan/output_tests/mutex_destroy_locked.cc b/compiler-rt/lib/tsan/output_tests/mutex_destroy_locked.cc
deleted file mode 100644
index f6ab874c2a2..00000000000
--- a/compiler-rt/lib/tsan/output_tests/mutex_destroy_locked.cc
+++ /dev/null
@@ -1,29 +0,0 @@
-#include <pthread.h>
-#include <unistd.h>
-
-void *Thread(void *p) {
- pthread_mutex_lock((pthread_mutex_t*)p);
- return 0;
-}
-
-int main() {
- pthread_mutex_t m;
- pthread_mutex_init(&m, 0);
- pthread_t t;
- pthread_create(&t, 0, Thread, &m);
- usleep(1000*1000);
- pthread_mutex_destroy(&m);
- pthread_join(t, 0);
- return 0;
-}
-
-// CHECK: WARNING: ThreadSanitizer: destroy of a locked mutex
-// CHECK: #0 pthread_mutex_destroy
-// CHECK: #1 main
-// CHECK: and:
-// CHECK: #0 pthread_mutex_lock
-// CHECK: #1 Thread
-// CHECK: Mutex {{.*}} created at:
-// CHECK: #0 pthread_mutex_init
-// CHECK: #1 main
-
diff --git a/compiler-rt/lib/tsan/output_tests/race_on_barrier.c b/compiler-rt/lib/tsan/output_tests/race_on_barrier.c
deleted file mode 100644
index 98d7a1d847f..00000000000
--- a/compiler-rt/lib/tsan/output_tests/race_on_barrier.c
+++ /dev/null
@@ -1,31 +0,0 @@
-#include <pthread.h>
-#include <stdio.h>
-#include <stddef.h>
-#include <unistd.h>
-
-pthread_barrier_t B;
-int Global;
-
-void *Thread1(void *x) {
- pthread_barrier_init(&B, 0, 2);
- pthread_barrier_wait(&B);
- return NULL;
-}
-
-void *Thread2(void *x) {
- usleep(1000000);
- pthread_barrier_wait(&B);
- return NULL;
-}
-
-int main() {
- pthread_t t;
- pthread_create(&t, NULL, Thread1, NULL);
- Thread2(0);
- pthread_join(t, NULL);
- pthread_barrier_destroy(&B);
- return 0;
-}
-
-// CHECK: WARNING: ThreadSanitizer: data race
-
diff --git a/compiler-rt/lib/tsan/output_tests/race_on_barrier2.c b/compiler-rt/lib/tsan/output_tests/race_on_barrier2.c
deleted file mode 100644
index dbdb6b55700..00000000000
--- a/compiler-rt/lib/tsan/output_tests/race_on_barrier2.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include <pthread.h>
-#include <stdio.h>
-#include <stddef.h>
-#include <unistd.h>
-
-pthread_barrier_t B;
-int Global;
-
-void *Thread1(void *x) {
- if (pthread_barrier_wait(&B) == PTHREAD_BARRIER_SERIAL_THREAD)
- pthread_barrier_destroy(&B);
- return NULL;
-}
-
-void *Thread2(void *x) {
- if (pthread_barrier_wait(&B) == PTHREAD_BARRIER_SERIAL_THREAD)
- pthread_barrier_destroy(&B);
- return NULL;
-}
-
-int main() {
- pthread_barrier_init(&B, 0, 2);
- pthread_t t;
- pthread_create(&t, NULL, Thread1, NULL);
- Thread2(0);
- pthread_join(t, NULL);
- return 0;
-}
-
-// CHECK: WARNING: ThreadSanitizer: data race
diff --git a/compiler-rt/lib/tsan/output_tests/race_on_heap.cc b/compiler-rt/lib/tsan/output_tests/race_on_heap.cc
deleted file mode 100644
index 09a461c59e4..00000000000
--- a/compiler-rt/lib/tsan/output_tests/race_on_heap.cc
+++ /dev/null
@@ -1,46 +0,0 @@
-#include <pthread.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-void *Thread1(void *p) {
- *(int*)p = 42;
- return 0;
-}
-
-void *Thread2(void *p) {
- *(int*)p = 44;
- return 0;
-}
-
-void *alloc() {
- return malloc(99);
-}
-
-void *AllocThread(void* arg) {
- return alloc();
-}
-
-int main() {
- void *p = 0;
- pthread_t t[2];
- pthread_create(&t[0], 0, AllocThread, 0);
- pthread_join(t[0], &p);
- fprintf(stderr, "addr=%p\n", p);
- pthread_create(&t[0], 0, Thread1, (char*)p + 16);
- pthread_create(&t[1], 0, Thread2, (char*)p + 16);
- pthread_join(t[0], 0);
- pthread_join(t[1], 0);
- return 0;
-}
-
-// CHECK: addr=[[ADDR:0x[0-9,a-f]+]]
-// CHECK: WARNING: ThreadSanitizer: data race
-// ...
-// CHECK: Location is heap block of size 99 at [[ADDR]] allocated by thread 1:
-// CHCEKL #0 malloc
-// CHECK: #1 alloc
-// CHECK: #2 AllocThread
-// ...
-// CHECK: Thread 1 (finished) created at:
-// CHECK: #0 pthread_create
-// CHECK: #1 main
diff --git a/compiler-rt/lib/tsan/output_tests/race_on_mutex.c b/compiler-rt/lib/tsan/output_tests/race_on_mutex.c
deleted file mode 100644
index 3ee9494dc4b..00000000000
--- a/compiler-rt/lib/tsan/output_tests/race_on_mutex.c
+++ /dev/null
@@ -1,41 +0,0 @@
-#include <pthread.h>
-#include <stdio.h>
-#include <stddef.h>
-#include <unistd.h>
-
-pthread_mutex_t Mtx;
-int Global;
-
-void *Thread1(void *x) {
- pthread_mutex_init(&Mtx, 0);
- pthread_mutex_lock(&Mtx);
- Global = 42;
- pthread_mutex_unlock(&Mtx);
- return NULL;
-}
-
-void *Thread2(void *x) {
- usleep(1000000);
- pthread_mutex_lock(&Mtx);
- Global = 43;
- pthread_mutex_unlock(&Mtx);
- return NULL;
-}
-
-int main() {
- pthread_t t[2];
- pthread_create(&t[0], NULL, Thread1, NULL);
- pthread_create(&t[1], NULL, Thread2, NULL);
- pthread_join(t[0], NULL);
- pthread_join(t[1], NULL);
- pthread_mutex_destroy(&Mtx);
- return 0;
-}
-
-// CHECK: WARNING: ThreadSanitizer: data race
-// CHECK-NEXT: Read of size 1 at {{.*}} by thread 2:
-// CHECK-NEXT: #0 pthread_mutex_lock
-// CHECK-NEXT: #1 Thread2{{.*}} {{.*}}race_on_mutex.c:19{{(:3)?}} ({{.*}})
-// CHECK: Previous write of size 1 at {{.*}} by thread 1:
-// CHECK-NEXT: #0 pthread_mutex_init {{.*}} ({{.*}})
-// CHECK-NEXT: #1 Thread1{{.*}} {{.*}}race_on_mutex.c:10{{(:3)?}} ({{.*}})
diff --git a/compiler-rt/lib/tsan/output_tests/race_with_finished_thread.cc b/compiler-rt/lib/tsan/output_tests/race_with_finished_thread.cc
deleted file mode 100644
index 1f60f4ba349..00000000000
--- a/compiler-rt/lib/tsan/output_tests/race_with_finished_thread.cc
+++ /dev/null
@@ -1,43 +0,0 @@
-#include <pthread.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-
-// Ensure that we can restore a stack of a finished thread.
-
-int g_data;
-
-void __attribute__((noinline)) foobar(int *p) {
- *p = 42;
-}
-
-void *Thread1(void *x) {
- foobar(&g_data);
- return NULL;
-}
-
-void *Thread2(void *x) {
- usleep(1000*1000);
- g_data = 43;
- return NULL;
-}
-
-int main() {
- pthread_t t[2];
- pthread_create(&t[0], NULL, Thread1, NULL);
- pthread_create(&t[1], NULL, Thread2, NULL);
- pthread_join(t[0], NULL);
- pthread_join(t[1], NULL);
- return 0;
-}
-
-// CHECK: WARNING: ThreadSanitizer: data race
-// CHECK: Write of size 4 at {{.*}} by thread 2:
-// CHECK: Previous write of size 4 at {{.*}} by thread 1:
-// CHECK: #0 foobar
-// CHECK: #1 Thread1
-// CHECK: Thread 1 (finished) created at:
-// CHECK: #0 pthread_create
-// CHECK: #1 main
-
diff --git a/compiler-rt/lib/tsan/output_tests/simple_race.c b/compiler-rt/lib/tsan/output_tests/simple_race.c
deleted file mode 100644
index ed831fd8c5a..00000000000
--- a/compiler-rt/lib/tsan/output_tests/simple_race.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include <pthread.h>
-#include <stdio.h>
-
-int Global;
-
-void *Thread1(void *x) {
- Global = 42;
- return NULL;
-}
-
-void *Thread2(void *x) {
- Global = 43;
- return NULL;
-}
-
-int main() {
- pthread_t t[2];
- pthread_create(&t[0], NULL, Thread1, NULL);
- pthread_create(&t[1], NULL, Thread2, NULL);
- pthread_join(t[0], NULL);
- pthread_join(t[1], NULL);
- return 0;
-}
-
-// CHECK: WARNING: ThreadSanitizer: data race
diff --git a/compiler-rt/lib/tsan/output_tests/simple_race.cc b/compiler-rt/lib/tsan/output_tests/simple_race.cc
deleted file mode 100644
index 8d2cabff772..00000000000
--- a/compiler-rt/lib/tsan/output_tests/simple_race.cc
+++ /dev/null
@@ -1,24 +0,0 @@
-#include <pthread.h>
-#include <stdio.h>
-
-int Global;
-
-void *Thread1(void *x) {
- Global++;
- return NULL;
-}
-
-void *Thread2(void *x) {
- Global--;
- return NULL;
-}
-
-int main() {
- pthread_t t[2];
- pthread_create(&t[0], NULL, Thread1, NULL);
- pthread_create(&t[1], NULL, Thread2, NULL);
- pthread_join(t[0], NULL);
- pthread_join(t[1], NULL);
-}
-
-// CHECK: WARNING: ThreadSanitizer: data race
diff --git a/compiler-rt/lib/tsan/output_tests/simple_stack.c b/compiler-rt/lib/tsan/output_tests/simple_stack.c
deleted file mode 100644
index 12c5f5eaac5..00000000000
--- a/compiler-rt/lib/tsan/output_tests/simple_stack.c
+++ /dev/null
@@ -1,65 +0,0 @@
-#include <pthread.h>
-#include <stdio.h>
-#include <unistd.h>
-
-int Global;
-
-void __attribute__((noinline)) foo1() {
- Global = 42;
-}
-
-void __attribute__((noinline)) bar1() {
- volatile int tmp = 42; (void)tmp;
- foo1();
-}
-
-void __attribute__((noinline)) foo2() {
- volatile int v = Global; (void)v;
-}
-
-void __attribute__((noinline)) bar2() {
- volatile int tmp = 42; (void)tmp;
- foo2();
-}
-
-void *Thread1(void *x) {
- usleep(1000000);
- bar1();
- return NULL;
-}
-
-void *Thread2(void *x) {
- bar2();
- return NULL;
-}
-
-void StartThread(pthread_t *t, void *(*f)(void*)) {
- pthread_create(t, NULL, f, NULL);
-}
-
-int main() {
- pthread_t t[2];
- StartThread(&t[0], Thread1);
- StartThread(&t[1], Thread2);
- pthread_join(t[0], NULL);
- pthread_join(t[1], NULL);
- return 0;
-}
-
-// CHECK: WARNING: ThreadSanitizer: data race
-// CHECK-NEXT: Write of size 4 at {{.*}} by thread 1:
-// CHECK-NEXT: #0 foo1{{.*}} {{.*}}simple_stack.c:8{{(:3)?}} ({{.*}})
-// CHECK-NEXT: #1 bar1{{.*}} {{.*}}simple_stack.c:13{{(:3)?}} ({{.*}})
-// CHECK-NEXT: #2 Thread1{{.*}} {{.*}}simple_stack.c:27{{(:3)?}} ({{.*}})
-// CHECK: Previous read of size 4 at {{.*}} by thread 2:
-// CHECK-NEXT: #0 foo2{{.*}} {{.*}}simple_stack.c:17{{(:26)?}} ({{.*}})
-// CHECK-NEXT: #1 bar2{{.*}} {{.*}}simple_stack.c:22{{(:3)?}} ({{.*}})
-// CHECK-NEXT: #2 Thread2{{.*}} {{.*}}simple_stack.c:32{{(:3)?}} ({{.*}})
-// CHECK: Thread 1 (running) created at:
-// CHECK-NEXT: #0 pthread_create {{.*}} ({{.*}})
-// CHECK-NEXT: #1 StartThread{{.*}} {{.*}}simple_stack.c:37{{(:3)?}} ({{.*}})
-// CHECK-NEXT: #2 main{{.*}} {{.*}}simple_stack.c:42{{(:3)?}} ({{.*}})
-// CHECK: Thread 2 ({{.*}}) created at:
-// CHECK-NEXT: #0 pthread_create {{.*}} ({{.*}})
-// CHECK-NEXT: #1 StartThread{{.*}} {{.*}}simple_stack.c:37{{(:3)?}} ({{.*}})
-// CHECK-NEXT: #2 main{{.*}} {{.*}}simple_stack.c:43{{(:3)?}} ({{.*}})
diff --git a/compiler-rt/lib/tsan/output_tests/simple_stack2.cc b/compiler-rt/lib/tsan/output_tests/simple_stack2.cc
deleted file mode 100644
index 560541589b3..00000000000
--- a/compiler-rt/lib/tsan/output_tests/simple_stack2.cc
+++ /dev/null
@@ -1,52 +0,0 @@
-#include <pthread.h>
-#include <stdio.h>
-#include <unistd.h>
-
-int Global;
-
-void __attribute__((noinline)) foo1() {
- Global = 42;
-}
-
-void __attribute__((noinline)) bar1() {
- volatile int tmp = 42;
- int tmp2 = tmp;
- (void)tmp2;
- foo1();
-}
-
-void __attribute__((noinline)) foo2() {
- volatile int tmp = Global;
- int tmp2 = tmp;
- (void)tmp2;
-}
-
-void __attribute__((noinline)) bar2() {
- volatile int tmp = 42;
- int tmp2 = tmp;
- (void)tmp2;
- foo2();
-}
-
-void *Thread1(void *x) {
- usleep(1000000);
- bar1();
- return NULL;
-}
-
-int main() {
- pthread_t t;
- pthread_create(&t, NULL, Thread1, NULL);
- bar2();
- pthread_join(t, NULL);
-}
-
-// CHECK: WARNING: ThreadSanitizer: data race
-// CHECK-NEXT: Write of size 4 at {{.*}} by thread 1:
-// CHECK-NEXT: #0 foo1{{.*}} {{.*}}simple_stack2.cc:8{{(:3)?}} ({{.*}})
-// CHECK-NEXT: #1 bar1{{.*}} {{.*}}simple_stack2.cc:15{{(:3)?}} ({{.*}})
-// CHECK-NEXT: #2 Thread1{{.*}} {{.*}}simple_stack2.cc:33{{(:3)?}} ({{.*}})
-// CHECK: Previous read of size 4 at {{.*}} by main thread:
-// CHECK-NEXT: #0 foo2{{.*}} {{.*}}simple_stack2.cc:19{{(:28)?}} ({{.*}})
-// CHECK-NEXT: #1 bar2{{.*}} {{.*}}simple_stack2.cc:28{{(:3)?}} ({{.*}})
-// CHECK-NEXT: #2 main{{.*}} {{.*}}simple_stack2.cc:40{{(:3)?}} ({{.*}})
diff --git a/compiler-rt/lib/tsan/output_tests/sleep_sync.cc b/compiler-rt/lib/tsan/output_tests/sleep_sync.cc
deleted file mode 100644
index a130f1530a3..00000000000
--- a/compiler-rt/lib/tsan/output_tests/sleep_sync.cc
+++ /dev/null
@@ -1,30 +0,0 @@
-#include <pthread.h>
-#include <unistd.h>
-
-int X = 0;
-
-void *Thread(void *p) {
- X = 42;
- return 0;
-}
-
-void MySleep() {
- usleep(100*1000);
-}
-
-int main() {
- pthread_t t;
- pthread_create(&t, 0, Thread, 0);
- MySleep(); // Assume the thread has done the write.
- X = 43;
- pthread_join(t, 0);
- return 0;
-}
-
-// CHECK: WARNING: ThreadSanitizer: data race
-// ...
-// CHECK: As if synchronized via sleep:
-// CHECK-NEXT: #0 usleep
-// CHECK-NEXT: #1 MySleep
-// CHECK-NEXT: #2 main
-
diff --git a/compiler-rt/lib/tsan/output_tests/sleep_sync2.cc b/compiler-rt/lib/tsan/output_tests/sleep_sync2.cc
deleted file mode 100644
index 017b9ba482d..00000000000
--- a/compiler-rt/lib/tsan/output_tests/sleep_sync2.cc
+++ /dev/null
@@ -1,21 +0,0 @@
-#include <pthread.h>
-#include <unistd.h>
-
-int X = 0;
-
-void *Thread(void *p) {
- X = 42;
- return 0;
-}
-
-int main() {
- pthread_t t;
- usleep(100*1000);
- pthread_create(&t, 0, Thread, 0);
- X = 43;
- pthread_join(t, 0);
- return 0;
-}
-
-// CHECK: WARNING: ThreadSanitizer: data race
-// CHECK-NOT: As if synchronized via sleep
diff --git a/compiler-rt/lib/tsan/output_tests/static_init1.cc b/compiler-rt/lib/tsan/output_tests/static_init1.cc
deleted file mode 100644
index 75d281954e1..00000000000
--- a/compiler-rt/lib/tsan/output_tests/static_init1.cc
+++ /dev/null
@@ -1,25 +0,0 @@
-#include <pthread.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-struct P {
- int x;
- int y;
-};
-
-void *Thread(void *x) {
- static P p = {rand(), rand()};
- if (p.x > RAND_MAX || p.y > RAND_MAX)
- exit(1);
- return 0;
-}
-
-int main() {
- pthread_t t[2];
- pthread_create(&t[0], 0, Thread, 0);
- pthread_create(&t[1], 0, Thread, 0);
- pthread_join(t[0], 0);
- pthread_join(t[1], 0);
-}
-
-// CHECK-NOT: WARNING: ThreadSanitizer: data race
diff --git a/compiler-rt/lib/tsan/output_tests/static_init2.cc b/compiler-rt/lib/tsan/output_tests/static_init2.cc
deleted file mode 100644
index 8d41061c1ea..00000000000
--- a/compiler-rt/lib/tsan/output_tests/static_init2.cc
+++ /dev/null
@@ -1,31 +0,0 @@
-#include <pthread.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-struct Cache {
- int x;
- explicit Cache(int x)
- : x(x) {
- }
-};
-
-void foo(Cache *my) {
- static Cache *c = my ? my : new Cache(rand());
- if (c->x >= RAND_MAX)
- exit(1);
-}
-
-void *Thread(void *x) {
- foo(new Cache(rand()));
- return 0;
-}
-
-int main() {
- pthread_t t[2];
- pthread_create(&t[0], 0, Thread, 0);
- pthread_create(&t[1], 0, Thread, 0);
- pthread_join(t[0], 0);
- pthread_join(t[1], 0);
-}
-
-// CHECK-NOT: WARNING: ThreadSanitizer: data race
diff --git a/compiler-rt/lib/tsan/output_tests/static_init3.cc b/compiler-rt/lib/tsan/output_tests/static_init3.cc
deleted file mode 100644
index 718f811d0df..00000000000
--- a/compiler-rt/lib/tsan/output_tests/static_init3.cc
+++ /dev/null
@@ -1,46 +0,0 @@
-#include <pthread.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <sched.h>
-
-struct Cache {
- int x;
-};
-
-Cache g_cache;
-
-Cache *CreateCache() {
- g_cache.x = rand();
- return &g_cache;
-}
-
-_Atomic(Cache*) queue;
-
-void *Thread1(void *x) {
- static Cache *c = CreateCache();
- __c11_atomic_store(&queue, c, 0);
- return 0;
-}
-
-void *Thread2(void *x) {
- Cache *c = 0;
- for (;;) {
- c = __c11_atomic_load(&queue, 0);
- if (c)
- break;
- sched_yield();
- }
- if (c->x >= RAND_MAX)
- exit(1);
- return 0;
-}
-
-int main() {
- pthread_t t[2];
- pthread_create(&t[0], 0, Thread1, 0);
- pthread_create(&t[1], 0, Thread2, 0);
- pthread_join(t[0], 0);
- pthread_join(t[1], 0);
-}
-
-// CHECK: WARNING: ThreadSanitizer: data race
diff --git a/compiler-rt/lib/tsan/output_tests/static_init4.cc b/compiler-rt/lib/tsan/output_tests/static_init4.cc
deleted file mode 100644
index 175d4642599..00000000000
--- a/compiler-rt/lib/tsan/output_tests/static_init4.cc
+++ /dev/null
@@ -1,35 +0,0 @@
-#include <pthread.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <sched.h>
-
-struct Cache {
- int x;
- explicit Cache(int x)
- : x(x) {
- }
-};
-
-int g_other;
-
-Cache *CreateCache() {
- g_other = rand();
- return new Cache(rand());
-}
-
-void *Thread1(void *x) {
- static Cache *c = CreateCache();
- if (c->x == g_other)
- exit(1);
- return 0;
-}
-
-int main() {
- pthread_t t[2];
- pthread_create(&t[0], 0, Thread1, 0);
- pthread_create(&t[1], 0, Thread1, 0);
- pthread_join(t[0], 0);
- pthread_join(t[1], 0);
-}
-
-// CHECK-NOT: WARNING: ThreadSanitizer: data race
diff --git a/compiler-rt/lib/tsan/output_tests/static_init5.cc b/compiler-rt/lib/tsan/output_tests/static_init5.cc
deleted file mode 100644
index 89c11373c2f..00000000000
--- a/compiler-rt/lib/tsan/output_tests/static_init5.cc
+++ /dev/null
@@ -1,40 +0,0 @@
-#include <pthread.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <sched.h>
-
-struct Cache {
- int x;
- explicit Cache(int x)
- : x(x) {
- }
-};
-
-void *AsyncInit(void *p) {
- return new Cache((int)(long)p);
-}
-
-Cache *CreateCache() {
- pthread_t t;
- pthread_create(&t, 0, AsyncInit, (void*)rand());
- void *res;
- pthread_join(t, &res);
- return (Cache*)res;
-}
-
-void *Thread1(void *x) {
- static Cache *c = CreateCache();
- if (c->x >= RAND_MAX)
- exit(1);
- return 0;
-}
-
-int main() {
- pthread_t t[2];
- pthread_create(&t[0], 0, Thread1, 0);
- pthread_create(&t[1], 0, Thread1, 0);
- pthread_join(t[0], 0);
- pthread_join(t[1], 0);
-}
-
-// CHECK-NOT: WARNING: ThreadSanitizer: data race
diff --git a/compiler-rt/lib/tsan/output_tests/suppress_same_address.cc b/compiler-rt/lib/tsan/output_tests/suppress_same_address.cc
deleted file mode 100644
index 6e98970a16e..00000000000
--- a/compiler-rt/lib/tsan/output_tests/suppress_same_address.cc
+++ /dev/null
@@ -1,27 +0,0 @@
-#include <pthread.h>
-
-int X;
-
-void *Thread1(void *x) {
- X = 42;
- X = 66;
- X = 78;
- return 0;
-}
-
-void *Thread2(void *x) {
- X = 11;
- X = 99;
- X = 73;
- return 0;
-}
-
-int main() {
- pthread_t t;
- pthread_create(&t, 0, Thread1, 0);
- Thread2(0);
- pthread_join(t, 0);
-}
-
-// CHECK: ThreadSanitizer: reported 1 warnings
-
diff --git a/compiler-rt/lib/tsan/output_tests/suppress_same_stacks.cc b/compiler-rt/lib/tsan/output_tests/suppress_same_stacks.cc
deleted file mode 100644
index 6046a4ea9f3..00000000000
--- a/compiler-rt/lib/tsan/output_tests/suppress_same_stacks.cc
+++ /dev/null
@@ -1,27 +0,0 @@
-#include <pthread.h>
-
-volatile int N; // Prevent loop unrolling.
-int **data;
-
-void *Thread1(void *x) {
- for (int i = 0; i < N; i++)
- data[i][0] = 42;
- return 0;
-}
-
-int main() {
- N = 4;
- data = new int*[N];
- for (int i = 0; i < N; i++)
- data[i] = new int;
- pthread_t t;
- pthread_create(&t, 0, Thread1, 0);
- Thread1(0);
- pthread_join(t, 0);
- for (int i = 0; i < N; i++)
- delete data[i];
- delete[] data;
-}
-
-// CHECK: ThreadSanitizer: reported 1 warnings
-
diff --git a/compiler-rt/lib/tsan/output_tests/test_output.sh b/compiler-rt/lib/tsan/output_tests/test_output.sh
deleted file mode 100755
index bd9cd915876..00000000000
--- a/compiler-rt/lib/tsan/output_tests/test_output.sh
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/bash
-
-ulimit -s 8192
-set -e # fail on any error
-
-ROOTDIR=$(dirname $0)/..
-
-# Assuming clang is in path.
-CC=clang
-CXX=clang++
-
-# TODO: add testing for all of -O0...-O3
-CFLAGS="-fthread-sanitizer -fPIE -O1 -g -fno-builtin -Wall"
-LDFLAGS="-pie -lpthread -ldl $ROOTDIR/rtl/libtsan.a"
-
-test_file() {
- SRC=$1
- COMPILER=$2
- echo ----- TESTING $(basename $1)
- OBJ=$SRC.o
- EXE=$SRC.exe
- $COMPILER $SRC $CFLAGS -c -o $OBJ
- $COMPILER $OBJ $LDFLAGS -o $EXE
- RES=$(TSAN_OPTIONS="atexit_sleep_ms=0" $EXE 2>&1 || true)
- if [ "$3" != "" ]; then
- printf "%s\n" "$RES"
- fi
- printf "%s\n" "$RES" | FileCheck $SRC
- if [ "$3" == "" ]; then
- rm -f $EXE $OBJ
- fi
-}
-
-if [ "$1" == "" ]; then
- for c in $ROOTDIR/output_tests/*.{c,cc}; do
- if [[ $c == */failing_* ]]; then
- echo SKIPPING FAILING TEST $c
- continue
- fi
- COMPILER=$CXX
- case $c in
- *.c) COMPILER=$CC
- esac
- test_file $c $COMPILER
- done
- wait
-else
- test_file $ROOTDIR/output_tests/$1 $CXX "DUMP"
-fi
diff --git a/compiler-rt/lib/tsan/output_tests/thread_leak.c b/compiler-rt/lib/tsan/output_tests/thread_leak.c
deleted file mode 100644
index 88a11be4e9c..00000000000
--- a/compiler-rt/lib/tsan/output_tests/thread_leak.c
+++ /dev/null
@@ -1,15 +0,0 @@
-#include <pthread.h>
-
-void *Thread(void *x) {
- return 0;
-}
-
-int main() {
- pthread_t t;
- pthread_create(&t, 0, Thread, 0);
- pthread_join(t, 0);
- return 0;
-}
-
-// CHECK-NOT: WARNING: ThreadSanitizer: thread leak
-
diff --git a/compiler-rt/lib/tsan/output_tests/thread_leak2.c b/compiler-rt/lib/tsan/output_tests/thread_leak2.c
deleted file mode 100644
index 71e9c50b8a2..00000000000
--- a/compiler-rt/lib/tsan/output_tests/thread_leak2.c
+++ /dev/null
@@ -1,15 +0,0 @@
-#include <pthread.h>
-
-void *Thread(void *x) {
- return 0;
-}
-
-int main() {
- pthread_t t;
- pthread_create(&t, 0, Thread, 0);
- pthread_detach(t);
- return 0;
-}
-
-// CHECK-NOT: WARNING: ThreadSanitizer: thread leak
-
diff --git a/compiler-rt/lib/tsan/output_tests/thread_leak3.c b/compiler-rt/lib/tsan/output_tests/thread_leak3.c
deleted file mode 100644
index 058b6e54d9d..00000000000
--- a/compiler-rt/lib/tsan/output_tests/thread_leak3.c
+++ /dev/null
@@ -1,14 +0,0 @@
-#include <pthread.h>
-
-void *Thread(void *x) {
- return 0;
-}
-
-int main() {
- pthread_t t;
- pthread_create(&t, 0, Thread, 0);
- return 0;
-}
-
-// CHECK: WARNING: ThreadSanitizer: thread leak
-
diff --git a/compiler-rt/lib/tsan/output_tests/tiny_race.c b/compiler-rt/lib/tsan/output_tests/tiny_race.c
deleted file mode 100644
index 3a8d192a671..00000000000
--- a/compiler-rt/lib/tsan/output_tests/tiny_race.c
+++ /dev/null
@@ -1,14 +0,0 @@
-#include <pthread.h>
-int Global;
-void *Thread1(void *x) {
- Global = 42;
- return x;
-}
-int main() {
- pthread_t t;
- pthread_create(&t, NULL, Thread1, NULL);
- Global = 43;
- pthread_join(t, NULL);
- return Global;
-}
-// CHECK: WARNING: ThreadSanitizer: data race
diff --git a/compiler-rt/lib/tsan/output_tests/virtual_inheritance_compile_bug.cc b/compiler-rt/lib/tsan/output_tests/virtual_inheritance_compile_bug.cc
deleted file mode 100644
index 6198e8a870b..00000000000
--- a/compiler-rt/lib/tsan/output_tests/virtual_inheritance_compile_bug.cc
+++ /dev/null
@@ -1,13 +0,0 @@
-// Regression test for http://code.google.com/p/thread-sanitizer/issues/detail?id=3.
-// The C++ variant is much more compact that the LLVM IR equivalent.
-#include <stdio.h>
-struct AAA { virtual long aaa () { return 0; } }; // NOLINT
-struct BBB: virtual AAA { unsigned long bbb; }; // NOLINT
-struct CCC: virtual AAA { };
-struct DDD: CCC, BBB { DDD(); }; // NOLINT
-DDD::DDD() { }
-int main() {
- DDD d;
- printf("OK\n");
-}
-// CHECK: OK
diff --git a/compiler-rt/lib/tsan/output_tests/vptr_benign_race.cc b/compiler-rt/lib/tsan/output_tests/vptr_benign_race.cc
deleted file mode 100644
index fec4ffbb6bc..00000000000
--- a/compiler-rt/lib/tsan/output_tests/vptr_benign_race.cc
+++ /dev/null
@@ -1,50 +0,0 @@
-#include <pthread.h>
-#include <semaphore.h>
-#include <stdio.h>
-
-struct A {
- A() {
- sem_init(&sem_, 0, 0);
- }
- virtual void F() {
- }
- void Done() {
- sem_post(&sem_);
- }
- virtual ~A() {
- }
- sem_t sem_;
-};
-
-struct B : A {
- virtual void F() {
- }
- virtual ~B() {
- sem_wait(&sem_);
- sem_destroy(&sem_);
- }
-};
-
-static A *obj = new B;
-
-void *Thread1(void *x) {
- obj->F();
- obj->Done();
- return NULL;
-}
-
-void *Thread2(void *x) {
- delete obj;
- return NULL;
-}
-
-int main() {
- pthread_t t[2];
- pthread_create(&t[0], NULL, Thread1, NULL);
- pthread_create(&t[1], NULL, Thread2, NULL);
- pthread_join(t[0], NULL);
- pthread_join(t[1], NULL);
- fprintf(stderr, "PASS\n");
-}
-// CHECK: PASS
-// CHECK-NOT: WARNING: ThreadSanitizer: data race
diff --git a/compiler-rt/lib/tsan/output_tests/vptr_harmful_race.cc b/compiler-rt/lib/tsan/output_tests/vptr_harmful_race.cc
deleted file mode 100644
index a19e6abc7bc..00000000000
--- a/compiler-rt/lib/tsan/output_tests/vptr_harmful_race.cc
+++ /dev/null
@@ -1,48 +0,0 @@
-#include <pthread.h>
-#include <semaphore.h>
-#include <stdio.h>
-
-struct A {
- A() {
- sem_init(&sem_, 0, 0);
- }
- virtual void F() {
- }
- void Done() {
- sem_post(&sem_);
- }
- virtual ~A() {
- sem_wait(&sem_);
- sem_destroy(&sem_);
- }
- sem_t sem_;
-};
-
-struct B : A {
- virtual void F() {
- }
- virtual ~B() { }
-};
-
-static A *obj = new B;
-
-void *Thread1(void *x) {
- obj->F();
- obj->Done();
- return NULL;
-}
-
-void *Thread2(void *x) {
- delete obj;
- return NULL;
-}
-
-int main() {
- pthread_t t[2];
- pthread_create(&t[0], NULL, Thread1, NULL);
- pthread_create(&t[1], NULL, Thread2, NULL);
- pthread_join(t[0], NULL);
- pthread_join(t[1], NULL);
-}
-
-// CHECK: WARNING: ThreadSanitizer: data race
OpenPOWER on IntegriCloud