15d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines// RUN: %clangxx_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s 22d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#include <pthread.h> 32d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#include <stdio.h> 42d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 52d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesextern "C" void AnnotateIgnoreReadsBegin(const char *f, int l); 62d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 72d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesvoid *Thread(void *x) { 82d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines AnnotateIgnoreReadsBegin("", 0); 92d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines return 0; 102d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines} 112d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 122d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesint main() { 132d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines pthread_t t; 142d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines pthread_create(&t, 0, Thread, 0); 152d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines pthread_join(t, 0); 162d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines} 172d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 182d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// CHECK: ThreadSanitizer: thread T1 finished with ignores enabled, created at: 192d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// CHECK: #0 pthread_create 202d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// CHECK: #1 main 212d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// CHECK: Ignore was enabled at: 222d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// CHECK: #0 AnnotateIgnoreReadsBegin 232d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// CHECK: #1 Thread 242d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 25