diff options
Diffstat (limited to 'test/msan/tls_reuse.cc')
-rw-r--r-- | test/msan/tls_reuse.cc | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/test/msan/tls_reuse.cc b/test/msan/tls_reuse.cc new file mode 100644 index 0000000000000..e024a5a8d13f5 --- /dev/null +++ b/test/msan/tls_reuse.cc @@ -0,0 +1,26 @@ +// RUN: %clangxx_msan -m64 -O0 %s -o %t && %run %t + +// Check that when TLS block is reused between threads, its shadow is cleaned. + +#include <pthread.h> +#include <stdio.h> + +int __thread x; + +void *ThreadFn(void *) { + if (!x) + printf("zzz\n"); + int y; + int * volatile p = &y; + x = *p; + return 0; +} + +int main(void) { + pthread_t t; + for (int i = 0; i < 100; ++i) { + pthread_create(&t, 0, ThreadFn, 0); + pthread_join(t, 0); + } + return 0; +} |