Home | History | Annotate | Download | only in tsan
      1 // RUN: %clangxx_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s
      2 #include "test.h"
      3 
      4 _Atomic(int*) p;
      5 
      6 void *thr(void *a) {
      7   barrier_wait(&barrier);
      8   int *pp = __c11_atomic_load(&p, __ATOMIC_RELAXED);
      9   *pp = 42;
     10   return 0;
     11 }
     12 
     13 int main() {
     14   barrier_init(&barrier, 2);
     15   pthread_t th;
     16   pthread_create(&th, 0, thr, p);
     17   __c11_atomic_store(&p, new int, __ATOMIC_RELAXED);
     18   barrier_wait(&barrier);
     19   pthread_join(th, 0);
     20 }
     21 
     22 // CHECK: data race
     23 // CHECK:   Previous write
     24 // CHECK:     #0 operator new
     25 // CHECK:   Location is heap block
     26 // CHECK:     #0 operator new
     27