xref: /llvm-project/compiler-rt/test/tsan/ignore_sync.cpp (revision 8214764f35e1b764fb939e18f16e11aa43073469)
1bcaeed49SFangrui Song // RUN: %clangxx_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s
2*8214764fSDmitry Vyukov #include "test.h"
3bcaeed49SFangrui Song 
4bcaeed49SFangrui Song int Global;
5bcaeed49SFangrui Song pthread_mutex_t Mutex = PTHREAD_MUTEX_INITIALIZER;
6bcaeed49SFangrui Song 
Thread(void * x)7bcaeed49SFangrui Song void *Thread(void *x) {
8bcaeed49SFangrui Song   AnnotateIgnoreSyncBegin(0, 0);
9bcaeed49SFangrui Song   pthread_mutex_lock(&Mutex);
10bcaeed49SFangrui Song   Global++;
11bcaeed49SFangrui Song   pthread_mutex_unlock(&Mutex);
12bcaeed49SFangrui Song   AnnotateIgnoreSyncEnd(0, 0);
13bcaeed49SFangrui Song   return 0;
14bcaeed49SFangrui Song }
15bcaeed49SFangrui Song 
main()16bcaeed49SFangrui Song int main() {
17bcaeed49SFangrui Song   pthread_t t;
18bcaeed49SFangrui Song   pthread_create(&t, 0, Thread, 0);
19bcaeed49SFangrui Song   pthread_mutex_lock(&Mutex);
20bcaeed49SFangrui Song   Global++;
21bcaeed49SFangrui Song   pthread_mutex_unlock(&Mutex);
22bcaeed49SFangrui Song   pthread_join(t, 0);
23bcaeed49SFangrui Song }
24bcaeed49SFangrui Song 
25bcaeed49SFangrui Song // CHECK: WARNING: ThreadSanitizer: data race
26bcaeed49SFangrui Song 
27