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