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