1// RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin10.0.0 -o - %s | FileCheck %s 2struct A { 3 A &operator=(const A&); 4 A &operator=(A&); 5}; 6 7struct B { 8 B &operator=(B&); 9}; 10 11struct C { 12 virtual C& operator=(const C&); 13}; 14 15struct POD { 16 int array[3][4]; 17}; 18 19struct CopyByValue { 20 CopyByValue(const CopyByValue&); 21 CopyByValue &operator=(CopyByValue); 22}; 23 24struct D : A, B, virtual C { 25 int scalar; 26 int scalar_array[2][3]; 27 B class_member; 28 C class_member_array[2][3]; 29 POD pod_array[2][3]; 30 31 union { 32 int x; 33 float f[3]; 34 }; 35 36 CopyByValue by_value; 37}; 38 39void test_D(D d1, D d2) { 40 d1 = d2; 41} 42 43// CHECK-LABEL: define linkonce_odr dereferenceable({{[0-9]+}}) %struct.D* @_ZN1DaSERS_ 44// CHECK: {{call.*_ZN1AaSERS_}} 45// CHECK: {{call.*_ZN1BaSERS_}} 46// CHECK: {{call.*_ZN1CaSERKS_}} 47// CHECK: {{call void @llvm.memcpy.p0i8.p0i8.i64.*i64 28}} 48// CHECK: {{call.*_ZN1BaSERS_}} 49// CHECK: br 50// CHECK: {{call.*_ZN1CaSERKS_}} 51// CHECK: {{call void @llvm.memcpy.p0i8.p0i8.i64.*i64 288}} 52// CHECK: {{call void @llvm.memcpy.p0i8.p0i8.i64.*i64 12}} 53// CHECK: call void @_ZN11CopyByValueC1ERKS_ 54// CHECK: {{call.*_ZN11CopyByValueaSES_}} 55// CHECK: ret 56