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