1 // RUN: %clangxx_msan -O0 %s -o %t && %run %t %p
2
3 // PR17377: C++ module destructors get stale argument shadow.
4
5 #include <stdio.h>
6 #include <stdlib.h>
7 class A {
8 public:
9 // This destructor get stale argument shadow left from the call to f().
~A()10 ~A() {
11 if (this)
12 exit(0);
13 }
14 };
15
16 A a;
17
18 __attribute__((noinline))
f(long x)19 void f(long x) {
20 }
21
main(void)22 int main(void) {
23 long x;
24 long * volatile p = &x;
25 // This call poisons TLS shadow for the first function argument.
26 f(*p);
27 return 0;
28 }
29