12d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// RUN: %clang_tsan -O1 %s -o %t && %run %t 2>&1 | FileCheck %s 21a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukov#include <pthread.h> 31a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukov#include <stdio.h> 41a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukov 51a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukovextern "C" const char *__tsan_default_options() { 61a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukov return "report_bugs=0"; 71a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukov} 81a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukov 91a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukovint Global; 101a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukov 111a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukovvoid *Thread1(void *x) { 121a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukov Global = 42; 131a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukov return NULL; 141a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukov} 151a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukov 161a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukovvoid *Thread2(void *x) { 171a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukov Global = 43; 181a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukov return NULL; 191a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukov} 201a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukov 211a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukovint main() { 221a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukov pthread_t t[2]; 231a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukov pthread_create(&t[0], NULL, Thread1, NULL); 241a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukov pthread_create(&t[1], NULL, Thread2, NULL); 251a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukov pthread_join(t[0], NULL); 261a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukov pthread_join(t[1], NULL); 271a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukov fprintf(stderr, "DONE\n"); 281a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukov return 0; 291a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukov} 301a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukov 311a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukov// CHECK-NOT: WARNING: ThreadSanitizer: data race 321a3f1ea833b151fc6554a7f910f8e0185f513a35Dmitry Vyukov// CHECK: DONE 33