brintos

brintos / llvm-project-archived public Read only

0
0
Text · 612 B · 3f0e198 Raw
28 lines · cpp
1// RUN: %clangxx_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s2#include "test.h"3 4// Test for https://github.com/google/sanitizers/issues/6025 6void *Thread(void *a) {7  __atomic_store_n((int*)a, 1, __ATOMIC_RELAXED);8  return 0;9}10 11int main() {12  int *a = new int(0);13  pthread_t t;14  pthread_create(&t, 0, Thread, a);15  while (__atomic_load_n(a, __ATOMIC_RELAXED) == 0)16    sched_yield();17  delete a;18  pthread_join(t, 0);19}20 21// CHECK: WARNING: ThreadSanitizer: data race22// CHECK:   Write23// CHECK:     #0 operator delete24// CHECK:     #1 main25 26// CHECK:   Previous atomic write27// CHECK:     #0 Thread28