1 // RUN: %clang_cc1 -emit-llvm -o %t %s 2 // REQUIRES: LP64 3 4 @interface Object 5 - (id) new; 6 @end 7 8 @interface Tester : Object 9 @property char PropertyAtomic_char; 10 @property short PropertyAtomic_short; 11 @property int PropertyAtomic_int; 12 @property long PropertyAtomic_long; 13 @property long long PropertyAtomic_longlong; 14 @property float PropertyAtomic_float; 15 @property double PropertyAtomic_double; 16 @property(assign) id PropertyAtomic_id; 17 @property(retain) id PropertyAtomicRetained_id; 18 @property(copy) id PropertyAtomicRetainedCopied_id; 19 @property(retain) id PropertyAtomicRetainedGCOnly_id; 20 @property(copy) id PropertyAtomicRetainedCopiedGCOnly_id; 21 @end 22 23 @implementation Tester 24 @dynamic PropertyAtomic_char; 25 @dynamic PropertyAtomic_short; 26 @dynamic PropertyAtomic_int; 27 @dynamic PropertyAtomic_long; 28 @dynamic PropertyAtomic_longlong; 29 @dynamic PropertyAtomic_float; 30 @dynamic PropertyAtomic_double; 31 @dynamic PropertyAtomic_id; 32 @dynamic PropertyAtomicRetained_id; 33 @dynamic PropertyAtomicRetainedCopied_id; 34 @dynamic PropertyAtomicRetainedGCOnly_id; 35 @dynamic PropertyAtomicRetainedCopiedGCOnly_id; 36 @end 37 38 @interface SubClass : Tester 39 { 40 char PropertyAtomic_char; 41 short PropertyAtomic_short; 42 int PropertyAtomic_int; 43 long PropertyAtomic_long; 44 long long PropertyAtomic_longlong; 45 float PropertyAtomic_float; 46 double PropertyAtomic_double; 47 id PropertyAtomic_id; 48 id PropertyAtomicRetained_id; 49 id PropertyAtomicRetainedCopied_id; 50 id PropertyAtomicRetainedGCOnly_id; 51 id PropertyAtomicRetainedCopiedGCOnly_id; 52 } 53 @end 54 55 @implementation SubClass 56 @synthesize PropertyAtomic_char; 57 @synthesize PropertyAtomic_short; 58 @synthesize PropertyAtomic_int; 59 @synthesize PropertyAtomic_long; 60 @synthesize PropertyAtomic_longlong; 61 @synthesize PropertyAtomic_float; 62 @synthesize PropertyAtomic_double; 63 @synthesize PropertyAtomic_id; 64 @synthesize PropertyAtomicRetained_id; 65 @synthesize PropertyAtomicRetainedCopied_id; 66 @synthesize PropertyAtomicRetainedGCOnly_id; 67 @synthesize PropertyAtomicRetainedCopiedGCOnly_id; 68 @end 69 70 int main() 71 { 72 SubClass *f = [SubClass new]; 73 f.PropertyAtomic_int = 1; 74 75 f.PropertyAtomic_int += 3; 76 77 f.PropertyAtomic_int -= 4; 78 return f.PropertyAtomic_int; 79 } 80