| John McCall | d1e40d5 | 2011-10-02 01:16:38 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm %s -o - | FileCheck %s | 
| John McCall | c5d9a90 | 2011-09-13 07:33:34 +0000 | [diff] [blame] | 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. | 
| Eli Friedman | de24d44 | 2011-09-13 20:48:30 +0000 | [diff] [blame] | 9 | // FIXME: But we don't at the moment; the backend doesn't know how to generate | 
|  | 10 | // correct code. | 
| John McCall | c5d9a90 | 2011-09-13 07:33:34 +0000 | [diff] [blame] | 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]"( | 
| Eli Friedman | de24d44 | 2011-09-13 20:48:30 +0000 | [diff] [blame] | 28 | // CHECK: call void @objc_copyStruct | 
| John McCall | c5d9a90 | 2011-09-13 07:33:34 +0000 | [diff] [blame] | 29 |  | 
|  | 30 | // CHECK: define internal void @"\01-[Test0 setS4:]"( | 
| Eli Friedman | de24d44 | 2011-09-13 20:48:30 +0000 | [diff] [blame] | 31 | // CHECK: call void @objc_copyStruct |