]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/msan/tls_reuse.cc
Vendor import of compiler-rt trunk r351319 (just before the release_80
[FreeBSD/FreeBSD.git] / test / msan / tls_reuse.cc
1 // RUN: %clangxx_msan -O0 %s -o %t && %run %t
2
3 // Check that when TLS block is reused between threads, its shadow is cleaned.
4
5 #include <pthread.h>
6 #include <stdio.h>
7
8 int __thread x;
9
10 void *ThreadFn(void *) {
11   if (!x)
12     printf("zzz\n");
13   int y;
14   int * volatile p = &y;
15   x = *p;
16   return 0;
17 }
18
19 int main(void) {
20   pthread_t t;
21   for (int i = 0; i < 100; ++i) {
22     pthread_create(&t, 0, ThreadFn, 0);
23     pthread_join(t, 0);
24   }
25   return 0;
26 }