| // RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o - %s -std=c++2a | FileCheck %s |
| |
| // RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-pch -o %t.pch %s -std=c++2a |
| // RUN: %clang_cc1 -triple x86_64-apple-darwin -include-pch %t.pch -x c++ /dev/null -emit-llvm -o - -std=c++2a | FileCheck %s |
| |
| struct B { |
| constexpr B() {} |
| constexpr ~B() { n *= 5; } |
| int n = 123; |
| }; |
| |
| // We emit a dynamic destructor here because b.n might have been modified |
| // before b is destroyed. |
| // |
| // CHECK: @b = global {{.*}} i32 123 |
| B b = B(); |
| |
| // CHECK: define {{.*}}cxx_global_var_init |
| // CHECK: call {{.*}} @__cxa_atexit({{.*}} @_ZN1BD1Ev {{.*}} @b |