forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
// RUN: %clang_cc1 -triple x86_64-linux-gnu -emit-llvm -o - %s -std=c++2a | FileCheck %s --implicit-check-not=cxx_global_var_init --implicit-check-not=cxa_atexit
 | 
						|
 | 
						|
// RUN: %clang_cc1 -triple x86_64-linux-gnu -emit-pch -o %t.pch %s -std=c++2a
 | 
						|
// RUN: %clang_cc1 -triple x86_64-linux-gnu -include-pch %t.pch -x c++ /dev/null -emit-llvm -o - -std=c++2a | FileCheck %s --implicit-check-not=cxx_global_var_init --implicit-check-not=cxa_atexit
 | 
						|
 | 
						|
// CHECK: @a = global i32 123,
 | 
						|
int a = (delete new int, 123);
 | 
						|
 | 
						|
struct B {
 | 
						|
  constexpr B() {}
 | 
						|
  constexpr ~B() { n *= 5; }
 | 
						|
  int n = 123;
 | 
						|
};
 | 
						|
// CHECK: @b = global {{.*}} i32 123
 | 
						|
extern constexpr B b = B();
 | 
						|
 | 
						|
// CHECK: @_ZL1c = internal global {{.*}} i32 123
 | 
						|
const B c;
 | 
						|
int use_c() { return c.n; }
 | 
						|
 | 
						|
struct D {
 | 
						|
  int n;
 | 
						|
  constexpr ~D() {}
 | 
						|
};
 | 
						|
D d;
 | 
						|
// CHECK: @d = global {{.*}} zeroinitializer
 | 
						|
 | 
						|
D d_arr[3];
 | 
						|
// CHECK: @d_arr = global {{.*}} zeroinitializer
 | 
						|
 | 
						|
thread_local D d_tl;
 | 
						|
// CHECK: @d_tl = thread_local global {{.*}} zeroinitializer
 | 
						|
 | 
						|
// CHECK-NOT: @llvm.global_ctors
 | 
						|
 | 
						|
// CHECK-LABEL: define {{.*}} @_Z1fv(
 | 
						|
void f() {
 | 
						|
  // CHECK-NOT: call
 | 
						|
  // CHECK: call {{.*}}memcpy
 | 
						|
  // CHECK-NOT: call
 | 
						|
  // CHECK: call {{.*}}memset
 | 
						|
  // CHECK-NOT: call
 | 
						|
  // CHECK: }
 | 
						|
  constexpr B b;
 | 
						|
  D d = D();
 | 
						|
}
 | 
						|
 | 
						|
// CHECK-LABEL: define {{.*}} @_Z1gv(
 | 
						|
void g() {
 | 
						|
  // CHECK-NOT: call
 | 
						|
  // CHECK-NOT: cxa_guard
 | 
						|
  // CHECK-NOT: _ZGV
 | 
						|
  // CHECK: }
 | 
						|
  static constexpr B b1;
 | 
						|
  static const B b2;
 | 
						|
  static D d;
 | 
						|
  thread_local D d_tl;
 | 
						|
}
 |