forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			77 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
| // RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++11 -emit-llvm %s -o - | FileCheck %s
 | |
| 
 | |
| struct A {
 | |
|   A(); A(const A&); A(A&&); A &operator=(const A&); A &operator=(A&&); ~A();
 | |
| };
 | |
| struct B {
 | |
|   B(); B(const B&); B(B&&); B &operator=(const B&); B &operator=(B&&); ~B();
 | |
| };
 | |
| 
 | |
| union U {
 | |
|   U();
 | |
|   U(const U &);
 | |
|   U(U &&);
 | |
|   U &operator=(const U&);
 | |
|   U &operator=(U&&);
 | |
|   ~U();
 | |
| 
 | |
|   A a;
 | |
|   int n;
 | |
| };
 | |
| 
 | |
| // CHECK-NOT: _ZN1A
 | |
| U::U() {}
 | |
| U::U(const U&) {}
 | |
| U::U(U&&) {}
 | |
| U &U::operator=(const U&) { return *this; }
 | |
| U &U::operator=(U &&) { return *this; }
 | |
| U::~U() {}
 | |
| 
 | |
| struct S {
 | |
|   S();
 | |
|   S(const S &);
 | |
|   S(S &&);
 | |
|   S &operator=(const S&);
 | |
|   S &operator=(S&&);
 | |
|   ~S();
 | |
| 
 | |
|   union {
 | |
|     A a;
 | |
|     int n;
 | |
|   };
 | |
|   B b;
 | |
|   int m;
 | |
| };
 | |
| 
 | |
| // CHECK: _ZN1SC2Ev
 | |
| // CHECK-NOT: _ZN1A
 | |
| // CHECK: _ZN1BC1Ev
 | |
| S::S() {}
 | |
| 
 | |
| // CHECK-NOT: _ZN1A
 | |
| 
 | |
| // CHECK: _ZN1SC2ERKS_
 | |
| // CHECK-NOT: _ZN1A
 | |
| // CHECK: _ZN1BC1Ev
 | |
| S::S(const S&) {}
 | |
| 
 | |
| // CHECK-NOT: _ZN1A
 | |
| 
 | |
| // CHECK: _ZN1SC2EOS_
 | |
| // CHECK-NOT: _ZN1A
 | |
| // CHECK: _ZN1BC1Ev
 | |
| S::S(S&&) {}
 | |
| 
 | |
| // CHECK-NOT: _ZN1A
 | |
| // CHECK-NOT: _ZN1B
 | |
| S &S::operator=(const S&) { return *this; }
 | |
| 
 | |
| S &S::operator=(S &&) { return *this; }
 | |
| 
 | |
| // CHECK: _ZN1SD2Ev
 | |
| // CHECK-NOT: _ZN1A
 | |
| // CHECK: _ZN1BD1Ev
 | |
| S::~S() {}
 | |
| 
 | |
| // CHECK-NOT: _ZN1A
 |