forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			56 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-LABEL: define linkonce_odr dereferenceable({{[0-9]+}}) %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
 |