1139823Simp/* { dg-shouldfail "tsan" } */
2133578Sharti/* { dg-additional-options "-ldl" } */
3133578Sharti
4133578Sharti#include <pthread.h>
5133578Sharti#include "tsan_barrier.h"
6133578Sharti
7133578Shartistatic pthread_barrier_t barrier;
8133578Shartipthread_barrier_t B;
9133578Shartiint Global;
10133578Sharti
11133578Shartivoid *Thread1(void *x) {
12133578Sharti  pthread_barrier_init(&B, 0, 2);
13133578Sharti  barrier_wait(&barrier);
14133578Sharti  pthread_barrier_wait(&B);
15133578Sharti  return NULL;
16133578Sharti}
17133578Sharti
18133578Shartivoid *Thread2(void *x) {
19133578Sharti  barrier_wait(&barrier);
20133578Sharti  pthread_barrier_wait(&B);
21133578Sharti  return NULL;
22133578Sharti}
23133578Sharti
24133578Shartiint main() {
25133578Sharti  barrier_init(&barrier, 2);
26133578Sharti  pthread_t t;
27133578Sharti  pthread_create(&t, NULL, Thread1, NULL);
28133578Sharti  Thread2(0);
29133578Sharti  pthread_join(t, NULL);
30133578Sharti  pthread_barrier_destroy(&B);
31133578Sharti  return 0;
32133578Sharti}
33133578Sharti
34139823Simp/* { dg-output "WARNING: ThreadSanitizer: data race.*(\n|\r\n|\r)" } */
35139823Simp