1 | // RUN: %clang_cc1 %s -emit-llvm -triple x86_64-apple-macosx10.13.0 -o - | FileCheck %s |
2 | |
3 | struct NonTrivial { |
4 | ~NonTrivial(); |
5 | }; |
6 | |
7 | // CHECK-NOT: __cxa_atexit{{.*}}_ZN10NonTrivialD1Ev |
8 | [[clang::no_destroy]] NonTrivial nt1; |
9 | // CHECK-NOT: _tlv_atexit{{.*}}_ZN10NonTrivialD1Ev |
10 | [[clang::no_destroy]] thread_local NonTrivial nt2; |
11 | |
12 | struct NonTrivial2 { |
13 | ~NonTrivial2(); |
14 | }; |
15 | |
16 | // CHECK: __cxa_atexit{{.*}}_ZN11NonTrivial2D1Ev |
17 | NonTrivial2 nt21; |
18 | // CHECK: _tlv_atexit{{.*}}_ZN11NonTrivial2D1Ev |
19 | thread_local NonTrivial2 nt22; |
20 | |
21 | void f() { |
22 | // CHECK: __cxa_atexit{{.*}}_ZN11NonTrivial2D1Ev |
23 | static NonTrivial2 nt21; |
24 | // CHECK: _tlv_atexit{{.*}}_ZN11NonTrivial2D1Ev |
25 | thread_local NonTrivial2 nt22; |
26 | } |
27 | |
28 | // CHECK: __cxa_atexit{{.*}}_ZN10NonTrivialD1Ev |
29 | [[clang::always_destroy]] NonTrivial nt3; |
30 | // CHECK: _tlv_atexit{{.*}}_ZN10NonTrivialD1Ev |
31 | [[clang::always_destroy]] thread_local NonTrivial nt4; |
32 | |