15d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines// RUN: %clangxx_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s
2848531192777acecf79747dc7c1ffeedf5c1da9fDmitry Vyukov#include <pthread.h>
3848531192777acecf79747dc7c1ffeedf5c1da9fDmitry Vyukov#include <unistd.h>
4848531192777acecf79747dc7c1ffeedf5c1da9fDmitry Vyukov
5848531192777acecf79747dc7c1ffeedf5c1da9fDmitry Vyukovint X = 0;
6848531192777acecf79747dc7c1ffeedf5c1da9fDmitry Vyukov
7848531192777acecf79747dc7c1ffeedf5c1da9fDmitry Vyukovvoid *Thread(void *p) {
8848531192777acecf79747dc7c1ffeedf5c1da9fDmitry Vyukov  X = 42;
9848531192777acecf79747dc7c1ffeedf5c1da9fDmitry Vyukov  return 0;
10848531192777acecf79747dc7c1ffeedf5c1da9fDmitry Vyukov}
11848531192777acecf79747dc7c1ffeedf5c1da9fDmitry Vyukov
12848531192777acecf79747dc7c1ffeedf5c1da9fDmitry Vyukovint main() {
13848531192777acecf79747dc7c1ffeedf5c1da9fDmitry Vyukov  pthread_t t;
1463a22f073dcdfbabc492ca4c9eb06d0571915570Dmitry Vyukov  sleep(1);
15848531192777acecf79747dc7c1ffeedf5c1da9fDmitry Vyukov  pthread_create(&t, 0, Thread, 0);
16848531192777acecf79747dc7c1ffeedf5c1da9fDmitry Vyukov  X = 43;
17848531192777acecf79747dc7c1ffeedf5c1da9fDmitry Vyukov  pthread_join(t, 0);
18848531192777acecf79747dc7c1ffeedf5c1da9fDmitry Vyukov  return 0;
19848531192777acecf79747dc7c1ffeedf5c1da9fDmitry Vyukov}
20848531192777acecf79747dc7c1ffeedf5c1da9fDmitry Vyukov
21848531192777acecf79747dc7c1ffeedf5c1da9fDmitry Vyukov// CHECK: WARNING: ThreadSanitizer: data race
22848531192777acecf79747dc7c1ffeedf5c1da9fDmitry Vyukov// CHECK-NOT: As if synchronized via sleep
23