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