xref: /llvm-project/clang/test/CodeGenObjC/optimized-setter.m (revision 0f1c1be1968076d6f96f8a7bcc4a15cf195ecd97)
1// RUN: %clang_cc1 %s -emit-llvm -fobjc-runtime=macosx-10.8 -triple x86_64-apple-macosx10.8.0 -o - | FileCheck %s
2// RUN: %clang_cc1 %s -emit-llvm -fobjc-runtime=ios-6.0.0  -triple x86_64-apple-ios6.0.0 -o - | FileCheck %s
3// RUN: %clang_cc1 %s -emit-llvm -fobjc-runtime=gnustep-1.7 -triple x86_64-unknown-freebsd -o - | FileCheck %s
4
5@interface I
6// void objc_setProperty_nonatomic(id self, SEL _cmd, id newValue, ptrdiff_t offset);
7// objc_setProperty(..., NO, NO)
8@property (nonatomic, retain) id nonatomicProperty;
9
10// void objc_setProperty_nonatomic_copy(id self, SEL _cmd, id newValue, ptrdiff_t offset);
11// objc_setProperty(..., NO, YES)
12@property (nonatomic, copy) id nonatomicPropertyCopy;
13
14// void objc_setProperty_atomic(id self, SEL _cmd, id newValue, ptrdiff_t offset);
15// objc_setProperty(..., YES, NO)
16@property (retain) id atomicProperty;
17
18// void objc_setProperty_atomic_copy(id self, SEL _cmd, id newValue, ptrdiff_t offset);
19// objc_setProperty(..., YES, YES)
20@property (copy) id atomicPropertyCopy;
21@end
22
23@implementation I
24@synthesize nonatomicProperty;
25@synthesize nonatomicPropertyCopy;
26@synthesize atomicProperty;
27@synthesize atomicPropertyCopy;
28@end
29
30// CHECK: call void @objc_setProperty_nonatomic
31// CHECK: call void @objc_setProperty_nonatomic_copy
32// CHECK: call void @objc_setProperty_atomic
33// CHECK: call void @objc_setProperty_atomic_copy
34
35