57 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
| // RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin10.0.0 -o - %s | FileCheck %s
 | |
| struct A { 
 | |
|   A &operator=(const A&);
 | |
|   A &operator=(A&);
 | |
| };
 | |
| 
 | |
| struct B {
 | |
|   B &operator=(B&);
 | |
| };
 | |
| 
 | |
| struct C {
 | |
|   virtual C& operator=(const C&);
 | |
| };
 | |
| 
 | |
| struct POD {
 | |
|   int array[3][4];
 | |
| };
 | |
| 
 | |
| struct CopyByValue {
 | |
|   CopyByValue(const CopyByValue&);
 | |
|   CopyByValue &operator=(CopyByValue);
 | |
| };
 | |
| 
 | |
| struct D : A, B, virtual C { 
 | |
|   int scalar;
 | |
|   int scalar_array[2][3];
 | |
|   B class_member;
 | |
|   C class_member_array[2][3];
 | |
|   POD pod_array[2][3];
 | |
| 
 | |
|   union {
 | |
|     int x;
 | |
|     float f[3];
 | |
|   };
 | |
| 
 | |
|   CopyByValue by_value;
 | |
| };
 | |
| 
 | |
| void test_D(D d1, D d2) {
 | |
|   d1 = d2;
 | |
| }
 | |
| 
 | |
| // CHECK: define linkonce_odr %struct.D* @_ZN1DaSERS_
 | |
| // CHECK: {{call.*_ZN1AaSERS_}}
 | |
| // CHECK: {{call.*_ZN1BaSERS_}}
 | |
| // CHECK: {{call.*_ZN1CaSERKS_}}
 | |
| // CHECK: {{call void @llvm.memcpy.p0i8.p0i8.i64.*i64 28}}
 | |
| // CHECK: {{call.*_ZN1BaSERS_}}
 | |
| // CHECK: br
 | |
| // CHECK: {{call.*_ZN1CaSERKS_}}
 | |
| // CHECK: {{call void @llvm.memcpy.p0i8.p0i8.i64.*i64 288}}
 | |
| // CHECK: {{call void @llvm.memcpy.p0i8.p0i8.i64.*i64 12}}
 | |
| // CHECK: call void @_ZN11CopyByValueC1ERKS_
 | |
| // CHECK: {{call.*_ZN11CopyByValueaSES_}}
 | |
| // CHECK: ret
 | |
| 
 |