12d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// RUN: %clang_tsan -O1 %s -o %t && TSAN_OPTIONS="$TSAN_OPTIONS suppressions=%s.supp" %run %t 2>&1 | FileCheck %s 23f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukov#include <pthread.h> 33f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukov#include <stdio.h> 43f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukov#include <unistd.h> 53f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukov 63f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukovint Global; 73f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukov 83f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukovvoid *Thread1(void *x) { 93f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukov sleep(1); 103f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukov Global = 42; 113f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukov return NULL; 123f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukov} 133f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukov 143f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukovvoid *Thread2(void *x) { 153f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukov Global = 43; 163f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukov return NULL; 173f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukov} 183f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukov 193f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukovint main() { 203f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukov pthread_t t[2]; 213f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukov pthread_create(&t[0], NULL, Thread1, NULL); 223f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukov pthread_create(&t[1], NULL, Thread2, NULL); 233f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukov pthread_join(t[0], NULL); 243f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukov pthread_join(t[1], NULL); 256cfb2f77280012b0818d00240aaa11bc359655d9Dmitry Vyukov printf("OK\n"); 263f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukov return 0; 273f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukov} 283f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukov 293f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukov// CHECK-NOT: failed to open suppressions file 303f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukov// CHECK-NOT: WARNING: ThreadSanitizer: data race 313f5f59ad7e542542775b780d5bfbc288c35ed6eaDmitry Vyukov 32