1*67e74705SXin Li// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-gc -emit-llvm -o - %s | FileCheck -check-prefix CHECK-LP64 %s 2*67e74705SXin Li// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fobjc-gc -emit-llvm -o - %s | FileCheck -check-prefix CHECK-LP64 %s 3*67e74705SXin Li// rdar: // 7849824 4*67e74705SXin Li// <rdar://problem/12547611> 5*67e74705SXin Li 6*67e74705SXin Listruct s { 7*67e74705SXin Li double a, b, c, d; 8*67e74705SXin Li}; 9*67e74705SXin Li 10*67e74705SXin Listruct s1 { 11*67e74705SXin Li int i; 12*67e74705SXin Li id j; 13*67e74705SXin Li id k; 14*67e74705SXin Li}; 15*67e74705SXin Li 16*67e74705SXin Listruct s2 {}; 17*67e74705SXin Li 18*67e74705SXin Li@interface A 19*67e74705SXin Li@property (readwrite) double x; 20*67e74705SXin Li@property (readwrite) struct s y; 21*67e74705SXin Li@property (nonatomic, readwrite) struct s1 z; 22*67e74705SXin Li@property (readwrite) struct s2 a; 23*67e74705SXin Li@end 24*67e74705SXin Li 25*67e74705SXin Li@implementation A 26*67e74705SXin Li@synthesize x; 27*67e74705SXin Li@synthesize y; 28*67e74705SXin Li@synthesize z; 29*67e74705SXin Li@synthesize a; 30*67e74705SXin Li@end 31*67e74705SXin Li// CHECK-LP64: define internal double @"\01-[A x]"( 32*67e74705SXin Li// CHECK-LP64: load atomic i64, i64* {{%.*}} unordered, align 8 33*67e74705SXin Li 34*67e74705SXin Li// CHECK-LP64: define internal void @"\01-[A setX:]"( 35*67e74705SXin Li// CHECK-LP64: store atomic i64 {{%.*}}, i64* {{%.*}} unordered, align 8 36*67e74705SXin Li 37*67e74705SXin Li// CHECK-LP64: define internal void @"\01-[A y]"( 38*67e74705SXin Li// CHECK-LP64: call void @objc_copyStruct(i8* {{%.*}}, i8* {{%.*}}, i64 32, i1 zeroext true, i1 zeroext false) 39*67e74705SXin Li 40*67e74705SXin Li// CHECK-LP64: define internal void @"\01-[A setY:]"( 41*67e74705SXin Li// CHECK-LP64: call void @objc_copyStruct(i8* {{%.*}}, i8* {{%.*}}, i64 32, i1 zeroext true, i1 zeroext false) 42*67e74705SXin Li 43*67e74705SXin Li// CHECK-LP64: define internal void @"\01-[A z]"( 44*67e74705SXin Li// CHECK-LP64: call i8* @objc_memmove_collectable( 45*67e74705SXin Li 46*67e74705SXin Li// CHECK-LP64: define internal void @"\01-[A setZ:]"( 47*67e74705SXin Li// CHECK-LP64: call i8* @objc_memmove_collectable( 48*67e74705SXin Li 49*67e74705SXin Li// CHECK-LP64: define internal void @"\01-[A a]"( 50*67e74705SXin Li// (do nothing) 51*67e74705SXin Li 52*67e74705SXin Li// CHECK-LP64: define internal void @"\01-[A setA:]"( 53*67e74705SXin Li// (do nothing) 54