1 // RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm %s -o - | FileCheck %s 2 3 // This structure's size is not a power of two, so the property does 4 // not get native atomics, even though x86-64 can do unaligned atomics 5 // with a lock prefix. 6 struct s3 { char c[3]; }; 7 8 // This structure's size is, so it does, because it can. 9 // FIXME: But we don't at the moment; the backend doesn't know how to generate 10 // correct code. 11 struct s4 { char c[4]; }; 12 13 @interface Test0 14 @property struct s3 s3; 15 @property struct s4 s4; 16 @end 17 @implementation Test0 18 @synthesize s3, s4; 19 @end 20 21 // CHECK: define internal i24 @"\01-[Test0 s3]"( 22 // CHECK: call void @objc_copyStruct 23 24 // CHECK: define internal void @"\01-[Test0 setS3:]"( 25 // CHECK: call void @objc_copyStruct 26 27 // CHECK: define internal i32 @"\01-[Test0 s4]"( 28 // CHECK: call void @objc_copyStruct 29 30 // CHECK: define internal void @"\01-[Test0 setS4:]"( 31 // CHECK: call void @objc_copyStruct 32