Daniel Dunbar | efb0fa9 | 2010-03-20 04:15:41 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -triple x86_64 %s -fno-use-cxa-atexit -emit-llvm -o - | FileCheck %s |
| 2 | |
Chris Lattner | 810112e | 2010-06-19 05:52:45 +0000 | [diff] [blame] | 3 | // PR7097 |
| 4 | // RUN: %clang_cc1 -triple x86_64 %s -fno-use-cxa-atexit -mconstructor-aliases -emit-llvm -o - | FileCheck %s |
| 5 | |
John McCall | 30fa370 | 2012-04-06 18:21:06 +0000 | [diff] [blame] | 6 | // CHECK: call void @_ZN1AC1Ev([[A:%.*]]* @a) |
| 7 | // CHECK-NEXT: call i32 @atexit(void ()* @__dtor_a) |
Bill Wendling | be9e8bf | 2013-02-28 22:49:57 +0000 | [diff] [blame] | 8 | // CHECK: define internal void @__dtor_a() [[NUW:#[0-9]+]] |
John McCall | 30fa370 | 2012-04-06 18:21:06 +0000 | [diff] [blame] | 9 | // CHECK: call void @_ZN1AD1Ev([[A]]* @a) |
| 10 | |
| 11 | // CHECK: call void @_ZN1AC1Ev([[A]]* @b) |
| 12 | // CHECK-NEXT: call i32 @atexit(void ()* @__dtor_b) |
Bill Wendling | be9e8bf | 2013-02-28 22:49:57 +0000 | [diff] [blame] | 13 | // CHECK: define internal void @__dtor_b() [[NUW]] |
John McCall | 30fa370 | 2012-04-06 18:21:06 +0000 | [diff] [blame] | 14 | // CHECK: call void @_ZN1AD1Ev([[A]]* @b) |
Daniel Dunbar | efb0fa9 | 2010-03-20 04:15:41 +0000 | [diff] [blame] | 15 | |
| 16 | class A { |
| 17 | public: |
| 18 | A(); |
| 19 | ~A(); |
| 20 | }; |
| 21 | |
| 22 | A a, b; |
John McCall | 30fa370 | 2012-04-06 18:21:06 +0000 | [diff] [blame] | 23 | |
| 24 | // PR9593 |
| 25 | // CHECK: define void @_Z4funcv() |
| 26 | // CHECK: call i32 @__cxa_guard_acquire(i64* @_ZGVZ4funcvE2a1) |
| 27 | // CHECK: call void @_ZN1AC1Ev([[A]]* @_ZZ4funcvE2a1) |
| 28 | // CHECK-NEXT: call i32 @atexit(void ()* @__dtor__ZZ4funcvE2a1) |
| 29 | // CHECK-NEXT: call void @__cxa_guard_release(i64* @_ZGVZ4funcvE2a1) |
| 30 | |
| 31 | // CHECK: call i32 @__cxa_guard_acquire(i64* @_ZGVZ4funcvE2a2) |
| 32 | // CHECK: call void @_ZN1AC1Ev([[A]]* @_ZZ4funcvE2a2) |
| 33 | // CHECK-NEXT: call i32 @atexit(void ()* @__dtor__ZZ4funcvE2a2) |
| 34 | // CHECK-NEXT: call void @__cxa_guard_release(i64* @_ZGVZ4funcvE2a2) |
| 35 | |
Bill Wendling | be9e8bf | 2013-02-28 22:49:57 +0000 | [diff] [blame] | 36 | // CHECK: define internal void @__dtor__ZZ4funcvE2a1() [[NUW]] |
John McCall | 30fa370 | 2012-04-06 18:21:06 +0000 | [diff] [blame] | 37 | // CHECK: call void @_ZN1AD1Ev([[A]]* @_ZZ4funcvE2a1) |
| 38 | |
Bill Wendling | be9e8bf | 2013-02-28 22:49:57 +0000 | [diff] [blame] | 39 | // CHECK: define internal void @__dtor__ZZ4funcvE2a2() [[NUW]] |
John McCall | 30fa370 | 2012-04-06 18:21:06 +0000 | [diff] [blame] | 40 | // CHECK: call void @_ZN1AD1Ev([[A]]* @_ZZ4funcvE2a2) |
| 41 | |
| 42 | void func() { |
| 43 | static A a1, a2; |
| 44 | } |
Bill Wendling | f7a9da0 | 2013-02-20 07:22:19 +0000 | [diff] [blame] | 45 | |
Bill Wendling | be9e8bf | 2013-02-28 22:49:57 +0000 | [diff] [blame] | 46 | // CHECK: attributes [[NUW]] = { nounwind } |