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 | |