47 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
| // RUN: %clang_cc1 -triple x86_64 %s -fno-use-cxa-atexit -emit-llvm -o - | FileCheck %s
 | |
| 
 | |
| // PR7097
 | |
| // RUN: %clang_cc1 -triple x86_64 %s -fno-use-cxa-atexit -mconstructor-aliases -emit-llvm -o - | FileCheck %s
 | |
| 
 | |
| // CHECK:      call void @_ZN1AC1Ev([[A:%.*]]* @a)
 | |
| // CHECK-NEXT: call i32 @atexit(void ()* @__dtor_a)
 | |
| // CHECK:      define internal void @__dtor_a() [[NUW:#[0-9]+]]
 | |
| // CHECK:      call void @_ZN1AD1Ev([[A]]* @a)
 | |
| 
 | |
| // CHECK:      call void @_ZN1AC1Ev([[A]]* @b)
 | |
| // CHECK-NEXT: call i32 @atexit(void ()* @__dtor_b)
 | |
| // CHECK:      define internal void @__dtor_b() [[NUW]]
 | |
| // CHECK:      call void @_ZN1AD1Ev([[A]]* @b)
 | |
| 
 | |
| class A {
 | |
| public:
 | |
|   A();
 | |
|   ~A();
 | |
| };
 | |
| 
 | |
| A a, b;
 | |
| 
 | |
| // PR9593
 | |
| // CHECK-LABEL:      define void @_Z4funcv()
 | |
| // CHECK:      call i32 @__cxa_guard_acquire(i64* @_ZGVZ4funcvE2a1)
 | |
| // CHECK:      call void @_ZN1AC1Ev([[A]]* @_ZZ4funcvE2a1)
 | |
| // CHECK-NEXT: call i32 @atexit(void ()* @__dtor__ZZ4funcvE2a1)
 | |
| // CHECK-NEXT: call void @__cxa_guard_release(i64* @_ZGVZ4funcvE2a1)
 | |
| 
 | |
| // CHECK:      call i32 @__cxa_guard_acquire(i64* @_ZGVZ4funcvE2a2)
 | |
| // CHECK:      call void @_ZN1AC1Ev([[A]]* @_ZZ4funcvE2a2)
 | |
| // CHECK-NEXT: call i32 @atexit(void ()* @__dtor__ZZ4funcvE2a2)
 | |
| // CHECK-NEXT: call void @__cxa_guard_release(i64* @_ZGVZ4funcvE2a2)
 | |
| 
 | |
| // CHECK:      define internal void @__dtor__ZZ4funcvE2a1() [[NUW]]
 | |
| // CHECK:      call void @_ZN1AD1Ev([[A]]* @_ZZ4funcvE2a1)
 | |
| 
 | |
| // CHECK:      define internal void @__dtor__ZZ4funcvE2a2() [[NUW]]
 | |
| // CHECK:      call void @_ZN1AD1Ev([[A]]* @_ZZ4funcvE2a2)
 | |
| 
 | |
| void func() {
 | |
|   static A a1, a2;
 | |
| }
 | |
| 
 | |
| // CHECK: attributes [[NUW]] = { noinline nounwind{{.*}} }
 |