<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Oct 16, 2011, at 12:29 PM, Chad Rosier wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi Fariborz,<div>I believe this commit is causing a failure.</div><div><span class="Apple-style-span" style="font-family: Times; "><pre style="font-family: 'Courier New', courier, monotype; "><span class="stdout" style="font-family: 'Courier New', courier, monotype; color: black; ">FAIL: SingleSource/UnitTests/ObjC++/property-reference-object.exec (742 of 868)</span></pre></span></div><div>Mind taking a look?</div></div></blockquote>Test is fixed in r142190.</div><div><br></div><div>- Fariborz</div><div><br><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><br></div><div> Chad</div><div><br></div><div><br><div><div>On Oct 15, 2011, at 10:36 AM, Fariborz Jahanian wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Author: fjahanian<br>Date: Sat Oct 15 12:36:49 2011<br>New Revision: 142075<br><br>URL: <a href="http://llvm.org/viewvc/llvm-project?rev=142075&view=rev">http://llvm.org/viewvc/llvm-project?rev=142075&view=rev</a><br>Log:<br>obj-c++: allow the getter/setter to return/take parameters<br>by reference. // <a href="rdar://10188258">rdar://10188258</a><br><br>Modified:<br> cfe/trunk/lib/Sema/SemaExpr.cpp<br> cfe/trunk/lib/Sema/SemaObjCProperty.cpp<br> cfe/trunk/test/CodeGenObjCXX/property-object-reference.mm<br><br>Modified: cfe/trunk/lib/Sema/SemaExpr.cpp<br>URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExpr.cpp?rev=142075&r1=142074&r2=142075&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExpr.cpp?rev=142075&r1=142074&r2=142075&view=diff</a><br>==============================================================================<br>--- cfe/trunk/lib/Sema/SemaExpr.cpp (original)<br>+++ cfe/trunk/lib/Sema/SemaExpr.cpp Sat Oct 15 12:36:49 2011<br>@@ -7264,13 +7264,14 @@<br> return;<br> }<br> }<br>- } else if (getLangOptions().ObjCAutoRefCount) {<br>+ } else {<br> const ObjCMethodDecl *setter<br> = PropRef->getExplicitProperty()->getSetterMethodDecl();<br> if (setter) {<br> ObjCMethodDecl::param_const_iterator P = setter->param_begin();<br> LHSTy = (*P)->getType();<br>- Consumed = (*P)->hasAttr<NSConsumedAttr>();<br>+ if (getLangOptions().ObjCAutoRefCount)<br>+ Consumed = (*P)->hasAttr<NSConsumedAttr>();<br> }<br> }<br><br>@@ -7285,6 +7286,7 @@<br> checkRetainCycles(const_cast<Expr*>(PropRef->getBase()), RHS.get());<br> }<br> }<br>+ LHSTy = LHSTy.getNonReferenceType();<br> }<br><br><br><br>Modified: cfe/trunk/lib/Sema/SemaObjCProperty.cpp<br>URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaObjCProperty.cpp?rev=142075&r1=142074&r2=142075&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaObjCProperty.cpp?rev=142075&r1=142074&r2=142075&view=diff</a><br>==============================================================================<br>--- cfe/trunk/lib/Sema/SemaObjCProperty.cpp (original)<br>+++ cfe/trunk/lib/Sema/SemaObjCProperty.cpp Sat Oct 15 12:36:49 2011<br>@@ -948,7 +948,8 @@<br> ObjCMethodDecl *GetterMethod,<br> SourceLocation Loc) {<br> if (GetterMethod &&<br>- GetterMethod->getResultType() != property->getType()) {<br>+ GetterMethod->getResultType().getNonReferenceType() <br>+ != property->getType().getNonReferenceType()) {<br> AssignConvertType result = Incompatible;<br> if (property->getType()->isObjCObjectPointerType())<br> result = CheckAssignmentConstraints(Loc, GetterMethod->getResultType(),<br>@@ -1510,7 +1511,8 @@<br> Diag(SetterMethod->getLocation(), diag::err_setter_type_void);<br> if (SetterMethod->param_size() != 1 ||<br> !Context.hasSameUnqualifiedType(<br>- (*SetterMethod->param_begin())->getType(), property->getType())) {<br>+ (*SetterMethod->param_begin())->getType().getNonReferenceType(), <br>+ property->getType().getNonReferenceType())) {<br> Diag(property->getLocation(),<br> diag::warn_accessor_property_type_mismatch)<br> << property->getDeclName()<br><br>Modified: cfe/trunk/test/CodeGenObjCXX/property-object-reference.mm<br>URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/property-object-reference.mm?rev=142075&r1=142074&r2=142075&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/property-object-reference.mm?rev=142075&r1=142074&r2=142075&view=diff</a><br>==============================================================================<br>--- cfe/trunk/test/CodeGenObjCXX/property-object-reference.mm (original)<br>+++ cfe/trunk/test/CodeGenObjCXX/property-object-reference.mm Sat Oct 15 12:36:49 2011<br>@@ -2,9 +2,14 @@<br> // <a href="rdar://10188258">rdar://10188258</a><br><br> struct Foo {int i;};<br>+static Foo gFoo;<br>+<br><br> @interface ObjCTest { }<br> @property (nonatomic, readonly) Foo& FooRefProperty;<br>+@property (nonatomic) Foo FooProperty;<br>+- (Foo &) FooProperty;<br>+- (void)setFooProperty : (Foo &) arg;<br> @end<br><br><br>@@ -13,11 +18,18 @@<br><br> -(void) test {<br> Foo& f = self.FooRefProperty;<br>+ Foo& f1 = self.FooProperty;<br> }<br>+- (Foo &) FooProperty { return gFoo; }<br>+- (void)setFooProperty : (Foo &) arg { };<br> @end<br><br> // CHECK: [[T0:%.*]] = load {{%.*}} [[S0:%.*]]<br> // CHECK: load i8** @"\01L_OBJC_SELECTOR_REFERENCES_<br> // CHECK: [[T2:%.*]] = bitcast {{%.*}} [[T0]] to i8*<br> // CHECK: @objc_msgSend<br>+// CHECK: [[R0:%.*]] = load {{%.*}} [[U0:%.*]]<br>+// CHECK: load i8** @"\01L_OBJC_SELECTOR_REFERENCES_<br>+// CHECK: [[R2:%.*]] = bitcast {{%.*}} [[R0]] to i8*<br>+// CHECK: @objc_msgSend<br><br><br><br>_______________________________________________<br>cfe-commits mailing list<br><a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br></div></blockquote></div><br></div></div></blockquote></div><br></body></html>