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