1 // RUN: %clang_cc1 -fobjc-gc -emit-llvm -triple x86_64-apple-darwin10.0.0 -fobjc-runtime=macosx-fragile-10.5 -o - %s | FileCheck %s -check-prefix=CHECK-OBJ
2 // RUN: %clang_cc1 -x c++ -emit-llvm -triple x86_64-apple-darwin10.0.0 -o - %s | FileCheck %s -check-prefix=CHECK-CPP
5 A &operator=(const A&);
14 virtual C& operator=(const C&);
23 CopyByValue(const CopyByValue&);
24 CopyByValue &operator=(CopyByValue);
27 struct D : A, B, virtual C {
29 int scalar_array[2][3];
31 C class_member_array[2][3];
42 void test_D(D d1, D d2) {
46 // CHECK-OBJ-LABEL: define linkonce_odr noundef nonnull align {{[0-9]+}} dereferenceable({{[0-9]+}}) ptr @_ZN1DaSERS_
47 // CHECK-OBJ: {{call.*_ZN1AaSERS_}}
48 // CHECK-OBJ: {{call.*_ZN1BaSERS_}}
49 // CHECK-OBJ: {{call.*_ZN1CaSERKS_}}
50 // CHECK-OBJ: {{call void @llvm.memcpy.p0.p0.i64.*i64 24}}
51 // CHECK-OBJ: {{call.*_ZN1BaSERS_}}
53 // CHECK-OBJ: {{call.*_ZN1CaSERKS_}}
54 // CHECK-OBJ: {{call.*@objc_memmove_collectable}}
55 // CHECK-OBJ: {{call void @llvm.memcpy.p0.p0.i64.*i64 12}}
56 // CHECK-OBJ: call void @_ZN11CopyByValueC1ERKS_
57 // CHECK-OBJ: {{call.*_ZN11CopyByValueaSES_}}
77 struct DerivedNonPOD: NonPOD {
81 struct DerivedPOD: POD {
88 // CHECK-OBJ: @objc_memmove_collectable{{.*}}i64 16
89 // CHECK-CPP: @llvm.memcpy{{.*}}i64 16
96 // CHECK-OBJ: @objc_memmove_collectable{{.*}}i64 10
97 // CHECK-CPP: @llvm.memcpy{{.*}}i64 10
101 void testDerivedNonPOD() {
105 // CHECK-OBJ: @objc_memmove_collectable{{.*}}i64 10
106 // CHECK-CPP: @llvm.memcpy{{.*}}i64 10
108 // CHECK-OBJ: @objc_memmove_collectable{{.*}}i64 11
109 // CHECK-CPP: @llvm.memcpy{{.*}}i64 11
113 void testDerivedPOD() {
117 // CHECK-OBJ: @objc_memmove_collectable{{.*}}i64 16
118 // CHECK-CPP: @llvm.memcpy{{.*}}i64 16
120 // CHECK-OBJ: @objc_memmove_collectable{{.*}}i64 17
121 // CHECK-CPP: @llvm.memcpy{{.*}}i64 17