1 // RUN: %clangxx_tsan %darwin_min_target_with_tls_support -O1 %s -o %t && \
2 // RUN: %deflake %run %t | \
3 // RUN: FileCheck %s --check-prefix=CHECK-%os --check-prefix=CHECK
6 void *Thread2(void *a
) {
7 barrier_wait(&barrier
);
12 void *Thread(void *a
) {
13 static __thread
int Var
= 42;
15 pthread_create(&t
, 0, Thread2
, &Var
);
17 barrier_wait(&barrier
);
23 barrier_init(&barrier
, 2);
25 pthread_create(&t
, 0, Thread
, 0);
27 fprintf(stderr
, "DONE\n");
31 // CHECK: WARNING: ThreadSanitizer: data race
32 // CHECK-Linux: Location is TLS of thread T1.
33 // CHECK-FreeBSD: Location is TLS of thread T1.
34 // CHECK-NetBSD: Location is TLS of thread T1.
35 // CHECK-Darwin: Location is heap block of size 4