1// RUN: %clangxx_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s
2#include <pthread.h>
3
4volatile int N;  // Prevent loop unrolling.
5int **data;
6
7void *Thread1(void *x) {
8  for (int i = 0; i < N; i++)
9    data[i][0] = 42;
10  return 0;
11}
12
13int main() {
14  N = 4;
15  data = new int*[N];
16  for (int i = 0; i < N; i++)
17    data[i] = new int;
18  pthread_t t;
19  pthread_create(&t, 0, Thread1, 0);
20  Thread1(0);
21  pthread_join(t, 0);
22  for (int i = 0; i < N; i++)
23    delete data[i];
24  delete[] data;
25}
26
27// CHECK: ThreadSanitizer: reported 1 warnings
28