1 /* PR sanitizer/65400 */
2 /* { dg-shouldfail "tsan" } */
3 /* { dg-additional-options "-fno-omit-frame-pointer -ldl" } */
6 #include "tsan_barrier.h"
8 static pthread_barrier_t barrier
;
12 fn1 (int a
, int b
, int c
)
21 fn2 (int a
, int b
, int c
)
29 __attribute__((noinline
, noclone
)) void
32 barrier_wait (&barrier
);
33 barrier_wait (&barrier
);
37 __attribute__((noinline
, noclone
)) void
40 int (*fna
) (int, int, int);
41 int (*fnb
) (int, int, int);
43 asm ("" : "=g" (fna
) : "0" (fn1
));
44 asm ("" : "=g" (fnb
) : "0" (fn2
));
45 for (i
= 0; i
< 128; i
++)
53 __attribute__((noinline
, noclone
)) void *
65 barrier_init (&barrier
, 2);
66 if (pthread_create (&th
, NULL
, tf
, NULL
))
68 barrier_wait (&barrier
);
70 barrier_wait (&barrier
);
71 pthread_join (th
, NULL
);
75 /* { dg-output "WARNING: ThreadSanitizer: data race.*#2 _?tf" } */