// RUN: %clang_tsan -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
#include <pthread.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

extern "C" {
void AnnotateIgnoreReadsBegin(const char *f, int l);
void AnnotateIgnoreReadsEnd(const char *f, int l);
void AnnotateIgnoreWritesBegin(const char *f, int l);
void AnnotateIgnoreWritesEnd(const char *f, int l);
}

void *Thread(void *p) {
  *(int*)p = 42;
  return 0;
}

int main() {
  int *p = new int(0);
  pthread_t t;
  pthread_create(&t, 0, Thread, p);
  sleep(1);
  AnnotateIgnoreReadsBegin(__FILE__, __LINE__);
  AnnotateIgnoreWritesBegin(__FILE__, __LINE__);
  free(p);
  AnnotateIgnoreReadsEnd(__FILE__, __LINE__);
  AnnotateIgnoreWritesEnd(__FILE__, __LINE__);
  pthread_join(t, 0);
  fprintf(stderr, "OK\n");
  return 0;
}

// CHECK-NOT: WARNING: ThreadSanitizer: data race
// CHECK: OK
