15d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines// RUN: %clangxx_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s 2fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov#include <pthread.h> 3fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov#include <stddef.h> 4fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov#include <unistd.h> 5fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov 6fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukovvoid *Thread2(void *a) { 72d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines sleep(1); 8fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov *(int*)a = 43; 9fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov return 0; 10fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov} 11fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov 12fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukovvoid *Thread(void *a) { 13fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov int Var = 42; 14fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov pthread_t t; 15fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov pthread_create(&t, 0, Thread2, &Var); 16fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov Var = 42; 17fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov pthread_join(t, 0); 18fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov return 0; 19fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov} 20fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov 21fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukovint main() { 22fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov pthread_t t; 23fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov pthread_create(&t, 0, Thread, 0); 24fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov pthread_join(t, 0); 25fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov} 26fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov 27fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov// CHECK: WARNING: ThreadSanitizer: data race 28fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov// CHECK: Location is stack of thread T1. 29fb917e9069ea44f7103f50c658be84a8f66de56cDmitry Vyukov 30