10172c8cd8ec72ae11e7b2a2b65b54466ea75de9cAlexey Samsonov// RUN: %clangxx_tsan -O1 %s -o %t && not %t 2>&1 | FileCheck %s 2fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov#include <pthread.h> 3fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov#include <stddef.h> 4fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov 5fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukovvoid *Thread(void *a) { 6fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov *(int*)a = 43; 7fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov return 0; 8fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov} 9fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov 10fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukovint main() { 11fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov int Var = 42; 12fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov pthread_t t; 13fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov pthread_create(&t, 0, Thread, &Var); 14fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov Var = 43; 15fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov pthread_join(t, 0); 16fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov} 17fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov 18fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov// CHECK: WARNING: ThreadSanitizer: data race 19fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov// CHECK: Location is stack of main thread. 20fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov 21