// RUN: %clang_cc1 -no-opaque-pointers -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
// RUN: %clang_cc1 -no-opaque-pointers -x c++ -emit-llvm -triple x86_64-apple-darwin10.0.0 -o - %s | FileCheck %s -check-prefix=CHECK-CPP
;
;
;
;
;
;
void
// CHECK-OBJ-LABEL: define linkonce_odr noundef nonnull align {{[0-9]+}} dereferenceable({{[0-9]+}}) %struct.D* @_ZN1DaSERS_
// CHECK-OBJ: {{call.*_ZN1AaSERS_}}
// CHECK-OBJ: {{call.*_ZN1BaSERS_}}
// CHECK-OBJ: {{call.*_ZN1CaSERKS_}}
// CHECK-OBJ: {{call void @llvm.memcpy.p0i8.p0i8.i64.*i64 24}}
// CHECK-OBJ: {{call.*_ZN1BaSERS_}}
// CHECK-OBJ: br
// CHECK-OBJ: {{call.*_ZN1CaSERKS_}}
// CHECK-OBJ: {{call.*@objc_memmove_collectable}}
// CHECK-OBJ: {{call void @llvm.memcpy.p0i8.p0i8.i64.*i64 12}}
// CHECK-OBJ: call void @_ZN11CopyByValueC1ERKS_
// CHECK-OBJ: {{call.*_ZN11CopyByValueaSES_}}
// CHECK-OBJ: ret