1 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-gc -emit-llvm -o - %s | FileCheck -check-prefix C %s 2 // RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fobjc-gc -emit-llvm -o - %s | FileCheck -check-prefix CP %s 3 4 static int count; 5 6 typedef struct S { 7 int ii; 8 } SS; 9 10 struct type_s { 11 SS may_recurse; 12 id id_val; 13 }; 14 15 @interface NamedObject 16 { 17 struct type_s type_s_ivar; 18 } 19 - (void) setSome : (struct type_s) arg; 20 - (struct type_s) getSome; 21 @property(assign) struct type_s aggre_prop; 22 @end 23 24 @implementation NamedObject 25 - (void) setSome : (struct type_s) arg 26 { 27 type_s_ivar = arg; 28 } 29 - (struct type_s) getSome 30 { 31 return type_s_ivar; 32 } 33 @synthesize aggre_prop = type_s_ivar; 34 @end 35 36 struct type_s some = {{1234}, (id)0}; 37 38 struct type_s get(void) 39 { 40 return some; 41 } 42 43 void f(const struct type_s *in, struct type_s *out) { 44 *out = *in; 45 } 46 47 #ifdef __cplusplus 48 struct Derived : type_s { }; 49 50 void foo(Derived* src, Derived* dest) { 51 *dest = *src; 52 } 53 #endif 54 55 // CHECK-C: call i8* @objc_memmove_collectable 56 // CHECK-C: call i8* @objc_memmove_collectable 57 // CHECK-C: call i8* @objc_memmove_collectable 58 59 // CHECK-CP: call i8* @objc_memmove_collectable 60 // CHECK-CP: call i8* @objc_memmove_collectable 61 // CHECK-CP: call i8* @objc_memmove_collectable 62 // CHECK-CP: call i8* @objc_memmove_collectable 63