Merge from trunk
[official-gcc.git] / gcc / testsuite / g++.dg / tsan / benign_race.C
blobb5f17208a12d39b06dfd2e548e4ea75ef0fbda5d
1 #include <pthread.h>
2 #include <stdio.h>
3 #include <unistd.h>
5 int Global;
6 int WTFGlobal;
8 extern "C" {
9 void AnnotateBenignRaceSized(const char *f, int l,
10                              void *mem, unsigned int size, const char *desc);
11 void WTFAnnotateBenignRaceSized(const char *f, int l,
12                                 void *mem, unsigned int size,
13                                 const char *desc);
17 void *Thread(void *x) {
18   Global = 42;
19   WTFGlobal = 142;
20   return 0;
23 int main() {
24   AnnotateBenignRaceSized(__FILE__, __LINE__,
25                           &Global, sizeof(Global), "Race on Global");
26   WTFAnnotateBenignRaceSized(__FILE__, __LINE__,
27                              &WTFGlobal, sizeof(WTFGlobal),
28                              "Race on WTFGlobal");
29   pthread_t t;
30   pthread_create(&t, 0, Thread, 0);
31   sleep(1);
32   Global = 43;
33   WTFGlobal = 143;
34   pthread_join(t, 0);
35   printf("OK\n");
38 /* { dg-prune-output "WARNING: ThreadSanitizer: data race.*(\n|\r\n|\r)" } */