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