|  | // RUN: %clang_cc1 -emit-llvm -o %t %s | 
|  | // REQUIRES: LP64 | 
|  |  | 
|  | @interface Object | 
|  | - (id) new; | 
|  | @end | 
|  |  | 
|  | @interface Tester : Object | 
|  | @property char PropertyAtomic_char; | 
|  | @property short PropertyAtomic_short; | 
|  | @property int PropertyAtomic_int; | 
|  | @property long PropertyAtomic_long; | 
|  | @property long long PropertyAtomic_longlong; | 
|  | @property float PropertyAtomic_float; | 
|  | @property double PropertyAtomic_double; | 
|  | @property(assign) id PropertyAtomic_id; | 
|  | @property(retain) id PropertyAtomicRetained_id; | 
|  | @property(copy) id PropertyAtomicRetainedCopied_id; | 
|  | @property(retain) id PropertyAtomicRetainedGCOnly_id; | 
|  | @property(copy) id PropertyAtomicRetainedCopiedGCOnly_id; | 
|  | @end | 
|  |  | 
|  | @implementation Tester | 
|  | @dynamic PropertyAtomic_char; | 
|  | @dynamic PropertyAtomic_short; | 
|  | @dynamic PropertyAtomic_int; | 
|  | @dynamic PropertyAtomic_long; | 
|  | @dynamic PropertyAtomic_longlong; | 
|  | @dynamic PropertyAtomic_float; | 
|  | @dynamic PropertyAtomic_double; | 
|  | @dynamic PropertyAtomic_id; | 
|  | @dynamic PropertyAtomicRetained_id; | 
|  | @dynamic PropertyAtomicRetainedCopied_id; | 
|  | @dynamic PropertyAtomicRetainedGCOnly_id; | 
|  | @dynamic PropertyAtomicRetainedCopiedGCOnly_id; | 
|  | @end | 
|  |  | 
|  | @interface SubClass : Tester | 
|  | { | 
|  | char PropertyAtomic_char; | 
|  | short PropertyAtomic_short; | 
|  | int PropertyAtomic_int; | 
|  | long PropertyAtomic_long; | 
|  | long long PropertyAtomic_longlong; | 
|  | float PropertyAtomic_float; | 
|  | double PropertyAtomic_double; | 
|  | id PropertyAtomic_id; | 
|  | id PropertyAtomicRetained_id; | 
|  | id PropertyAtomicRetainedCopied_id; | 
|  | id PropertyAtomicRetainedGCOnly_id; | 
|  | id PropertyAtomicRetainedCopiedGCOnly_id; | 
|  | } | 
|  | @end | 
|  |  | 
|  | @implementation SubClass | 
|  | @synthesize PropertyAtomic_char; | 
|  | @synthesize PropertyAtomic_short; | 
|  | @synthesize PropertyAtomic_int; | 
|  | @synthesize PropertyAtomic_long; | 
|  | @synthesize PropertyAtomic_longlong; | 
|  | @synthesize PropertyAtomic_float; | 
|  | @synthesize PropertyAtomic_double; | 
|  | @synthesize PropertyAtomic_id; | 
|  | @synthesize PropertyAtomicRetained_id; | 
|  | @synthesize PropertyAtomicRetainedCopied_id; | 
|  | @synthesize PropertyAtomicRetainedGCOnly_id; | 
|  | @synthesize PropertyAtomicRetainedCopiedGCOnly_id; | 
|  | @end | 
|  |  | 
|  | int main() | 
|  | { | 
|  | SubClass *f = [SubClass new]; | 
|  | f.PropertyAtomic_int = 1; | 
|  |  | 
|  | f.PropertyAtomic_int += 3; | 
|  |  | 
|  | f.PropertyAtomic_int -= 4; | 
|  | return f.PropertyAtomic_int; | 
|  | } |