annotate compiler-rt/test/tsan/ignorelist.cpp @ 207:2e18cbf3894f

LLVM12
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 08 Jun 2021 06:07:14 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
207
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 // Test ignorelist functionality for TSan.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 // RUN: echo "fun:*Ignorelisted_Thread2*" > %t.ignorelist
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 // RUN: %clangxx_tsan -O1 %s -fsanitize-ignorelist=%t.ignorelist -o %t && %run %t 2>&1 | FileCheck %s
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 #include <pthread.h>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 #include <stdio.h>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 int Global;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 void *Thread1(void *x) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 Global++;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 return NULL;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 void *Ignorelisted_Thread2(void *x) {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 Global--;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 return NULL;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 int main() {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 pthread_t t[2];
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 pthread_create(&t[0], NULL, Thread1, NULL);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 pthread_create(&t[1], NULL, Ignorelisted_Thread2, NULL);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 pthread_join(t[0], NULL);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 pthread_join(t[1], NULL);
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 fprintf(stderr, "PASS\n");
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 return 0;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 // CHECK-NOT: ThreadSanitizer: data race