15d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines// RUN: %clang_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s 2ec1e196dabccd57c69dbcc0d4931bd1c5d36876cKostya Serebryany#include <pthread.h> 3fb53992c309ed7b9cb2bf15343bf347fead90c02Dmitry Vyukov#include <unistd.h> 4fb53992c309ed7b9cb2bf15343bf347fead90c02Dmitry Vyukov 5ec1e196dabccd57c69dbcc0d4931bd1c5d36876cKostya Serebryanyint Global; 6fb53992c309ed7b9cb2bf15343bf347fead90c02Dmitry Vyukov 7ec1e196dabccd57c69dbcc0d4931bd1c5d36876cKostya Serebryanyvoid *Thread1(void *x) { 8fb53992c309ed7b9cb2bf15343bf347fead90c02Dmitry Vyukov sleep(1); 9ec1e196dabccd57c69dbcc0d4931bd1c5d36876cKostya Serebryany Global = 42; 10ec1e196dabccd57c69dbcc0d4931bd1c5d36876cKostya Serebryany return x; 11ec1e196dabccd57c69dbcc0d4931bd1c5d36876cKostya Serebryany} 12fb53992c309ed7b9cb2bf15343bf347fead90c02Dmitry Vyukov 13ec1e196dabccd57c69dbcc0d4931bd1c5d36876cKostya Serebryanyint main() { 14ec1e196dabccd57c69dbcc0d4931bd1c5d36876cKostya Serebryany pthread_t t; 15fb53992c309ed7b9cb2bf15343bf347fead90c02Dmitry Vyukov pthread_create(&t, 0, Thread1, 0); 16ec1e196dabccd57c69dbcc0d4931bd1c5d36876cKostya Serebryany Global = 43; 17fb53992c309ed7b9cb2bf15343bf347fead90c02Dmitry Vyukov pthread_join(t, 0); 18ec1e196dabccd57c69dbcc0d4931bd1c5d36876cKostya Serebryany return Global; 19ec1e196dabccd57c69dbcc0d4931bd1c5d36876cKostya Serebryany} 20fb53992c309ed7b9cb2bf15343bf347fead90c02Dmitry Vyukov 21ec1e196dabccd57c69dbcc0d4931bd1c5d36876cKostya Serebryany// CHECK: WARNING: ThreadSanitizer: data race 22