brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · ca8a8e0 Raw
36 lines · cpp
1// RUN: %clang_cc1 %s -fc++-static-destructors=none -emit-llvm -triple x86_64-apple-macosx10.13.0 -o - | \2// RUN:   FileCheck --check-prefixes=CHECK,NO-DTORS %s3// RUN: %clang_cc1 %s -fc++-static-destructors=thread-local -emit-llvm -triple x86_64-apple-macosx10.13.0 -o - | \4// RUN:   FileCheck --check-prefixes=CHECK,THREAD-LOCAL-DTORS %s5 6struct NonTrivial {7  ~NonTrivial();8};9 10// CHECK-NOT: __cxa_atexit{{.*}}_ZN10NonTrivialD1Ev11NonTrivial nt1;12// NO-DTORS-NOT: _tlv_atexit{{.*}}_ZN10NonTrivialD1Ev13// THREAD-LOCAL-DTORS: _tlv_atexit{{.*}}_ZN10NonTrivialD1Ev14thread_local NonTrivial nt2;15 16struct NonTrivial2 {17  ~NonTrivial2();18};19 20// CHECK: __cxa_atexit{{.*}}_ZN11NonTrivial2D1Ev21[[clang::always_destroy]] NonTrivial2 nt21;22// CHECK: _tlv_atexit{{.*}}_ZN11NonTrivial2D1Ev23[[clang::always_destroy]] thread_local NonTrivial2 nt22;24 25void f() {26  // CHECK: __cxa_atexit{{.*}}_ZN11NonTrivial2D1Ev27  [[clang::always_destroy]] static NonTrivial2 nt21;28  // CHECK: _tlv_atexit{{.*}}_ZN11NonTrivial2D1Ev29  [[clang::always_destroy]] thread_local NonTrivial2 nt22;30}31 32// CHECK-NOT: __cxa_atexit{{.*}}_ZN10NonTrivialD1Ev33[[clang::no_destroy]] NonTrivial nt3;34// CHECK-NOT: _tlv_atexit{{.*}}_ZN10NonTrivialD1Ev35[[clang::no_destroy]] thread_local NonTrivial nt4;36