| // RUN: %clang_cc1 %s -triple x86_64-apple-darwin10 -fobjc-fragile-abi -emit-llvm -o - | FileCheck %s |
| // rdar://10188258 |
| |
| struct Foo {int i;}; |
| static Foo gFoo; |
| |
| |
| @interface ObjCTest { } |
| @property (nonatomic, readonly) Foo& FooRefProperty; |
| @property (nonatomic) Foo FooProperty; |
| - (Foo &) FooProperty; |
| - (void)setFooProperty : (Foo &) arg; |
| @end |
| |
| |
| @implementation ObjCTest |
| @dynamic FooRefProperty; |
| |
| -(void) test { |
| Foo& f = self.FooRefProperty; |
| Foo& f1 = self.FooProperty; |
| } |
| - (Foo &) FooProperty { return gFoo; } |
| - (void)setFooProperty : (Foo &) arg { }; |
| @end |
| |
| // CHECK: [[T0:%.*]] = load {{%.*}} [[S0:%.*]] |
| // CHECK: load i8** @"\01L_OBJC_SELECTOR_REFERENCES_ |
| // CHECK: [[T2:%.*]] = bitcast {{%.*}} [[T0]] to i8* |
| // CHECK: @objc_msgSend |
| // CHECK: [[R0:%.*]] = load {{%.*}} [[U0:%.*]] |
| // CHECK: load i8** @"\01L_OBJC_SELECTOR_REFERENCES_ |
| // CHECK: [[R2:%.*]] = bitcast {{%.*}} [[R0]] to i8* |
| // CHECK: @objc_msgSend |
| |