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