// RUN: %clangxx_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s #include volatile int N; // Prevent loop unrolling. int **data; void *Thread1(void *x) { for (int i = 0; i < N; i++) data[i][0] = 42; return 0; } int main() { N = 4; data = new int*[N]; for (int i = 0; i < N; i++) data[i] = new int; pthread_t t; pthread_create(&t, 0, Thread1, 0); Thread1(0); pthread_join(t, 0); for (int i = 0; i < N; i++) delete data[i]; delete[] data; } // CHECK: ThreadSanitizer: reported 1 warnings