1*562c6b80SDan Liew // RUN: %clangxx_tsan %darwin_min_target_with_tls_support -O1 %s -o %t && \ 2*562c6b80SDan Liew // RUN: %deflake %run %t | \ 3*562c6b80SDan Liew // RUN: FileCheck %s --check-prefix=CHECK-%os --check-prefix=CHECK 4bcaeed49SFangrui Song #include "test.h" 5bcaeed49SFangrui Song Thread(void * a)6bcaeed49SFangrui Songvoid *Thread(void *a) { 7bcaeed49SFangrui Song barrier_wait(&barrier); 8bcaeed49SFangrui Song *(int*)a = 43; 9bcaeed49SFangrui Song return 0; 10bcaeed49SFangrui Song } 11bcaeed49SFangrui Song main()12bcaeed49SFangrui Songint main() { 13bcaeed49SFangrui Song barrier_init(&barrier, 2); 14bcaeed49SFangrui Song static __thread int Var = 42; 15bcaeed49SFangrui Song pthread_t t; 16bcaeed49SFangrui Song pthread_create(&t, 0, Thread, &Var); 17bcaeed49SFangrui Song Var = 43; 18bcaeed49SFangrui Song barrier_wait(&barrier); 19bcaeed49SFangrui Song pthread_join(t, 0); 20bcaeed49SFangrui Song } 21bcaeed49SFangrui Song 22bcaeed49SFangrui Song // CHECK: WARNING: ThreadSanitizer: data race 23bcaeed49SFangrui Song // CHECK-Linux: Location is TLS of main thread. 24bcaeed49SFangrui Song // CHECK-FreeBSD: Location is TLS of main thread. 25bcaeed49SFangrui Song // CHECK-NetBSD: Location is TLS of main thread. 26bcaeed49SFangrui Song // CHECK-Darwin: Location is heap block of size 4 27