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