aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2011-10-17 20:05:43 +0000
committerJohn McCall <rjmccall@apple.com>2011-10-17 20:05:43 +0000
commit88a4cfde0e0efefc40fbce3ae2c96191132218a8 (patch)
treed57eee055cd9e0d6a2abcd07bd0802ab66f60628
parent4e7064fa7e344e8f87a5b8457e96dfdd252c4a9e (diff)
downloadclang-88a4cfde0e0efefc40fbce3ae2c96191132218a8.tar.gz
Strip qualifiers off the type of an implicit property defined by
only a setter. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142236 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Sema/SemaExprObjC.cpp2
-rw-r--r--test/CodeGenObjC/arc-property.m15
2 files changed, 16 insertions, 1 deletions
diff --git a/lib/Sema/SemaExprObjC.cpp b/lib/Sema/SemaExprObjC.cpp
index cc9e8b3758..527983805c 100644
--- a/lib/Sema/SemaExprObjC.cpp
+++ b/lib/Sema/SemaExprObjC.cpp
@@ -673,7 +673,7 @@ HandleExprPropertyRefExpr(const ObjCObjectPointerType *OPT,
PType = getMessageSendResultType(QualType(OPT, 0), Getter, false, Super);
else {
ParmVarDecl *ArgDecl = *Setter->param_begin();
- PType = ArgDecl->getType();
+ PType = ArgDecl->getType().getUnqualifiedType(); // can't be an array
}
ExprValueKind VK = VK_LValue;
diff --git a/test/CodeGenObjC/arc-property.m b/test/CodeGenObjC/arc-property.m
new file mode 100644
index 0000000000..6c5180b1c3
--- /dev/null
+++ b/test/CodeGenObjC/arc-property.m
@@ -0,0 +1,15 @@
+// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-arc -emit-llvm %s -o - | FileCheck %s
+
+// rdar://problem/10290317
+@interface Test0
+- (void) setValue: (id) x;
+@end
+void test0(Test0 *t0, id value) {
+ t0.value = value;
+}
+// CHECK: define void @test0(
+// CHECK: call i8* @objc_retain(
+// CHECK: call i8* @objc_retain(
+// CHECK: @objc_msgSend
+// CHECK: call void @objc_release(
+// CHECK: call void @objc_release(