Hi Fariborz, On Wed, Aug 11, 2010 at 10:37 AM, Fariborz Jahanian <[email protected]> wrote: > Author: fjahanian > Date: Wed Aug 11 12:37:35 2010 > New Revision: 110832 > > URL: http://llvm.org/viewvc/llvm-project?rev=110832&view=rev > Log: > IRGen support for functions returning objc object > types. Fixes PR7865. > > Added: > cfe/trunk/test/CodeGenObjC/return-objc-object.mm > Modified: > cfe/trunk/lib/CodeGen/CodeGenFunction.cpp > cfe/trunk/lib/Sema/SemaStmt.cpp > cfe/trunk/test/SemaObjC/deref-interface.m > > Modified: cfe/trunk/lib/CodeGen/CodeGenFunction.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenFunction.cpp?rev=110832&r1=110831&r2=110832&view=diff > ============================================================================== > --- cfe/trunk/lib/CodeGen/CodeGenFunction.cpp (original) > +++ cfe/trunk/lib/CodeGen/CodeGenFunction.cpp Wed Aug 11 12:37:35 2010 > @@ -77,7 +77,7 @@ > > bool CodeGenFunction::hasAggregateLLVMType(QualType T) { > return T->isRecordType() || T->isArrayType() || T->isAnyComplexType() || > - T->isMemberFunctionPointerType(); > + T->isMemberFunctionPointerType() || T->isObjCObjectType(); > } > > void CodeGenFunction::EmitReturnBlock() { > > Modified: cfe/trunk/lib/Sema/SemaStmt.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaStmt.cpp?rev=110832&r1=110831&r2=110832&view=diff > ============================================================================== > --- cfe/trunk/lib/Sema/SemaStmt.cpp (original) > +++ cfe/trunk/lib/Sema/SemaStmt.cpp Wed Aug 11 12:37:35 2010 > @@ -30,15 +30,6 @@ > Sema::OwningStmtResult Sema::ActOnExprStmt(FullExprArg expr) { > Expr *E = expr->takeAs<Expr>(); > assert(E && "ActOnExprStmt(): missing expression"); > - if (E->getType()->isObjCObjectType()) { > - if (LangOpts.ObjCNonFragileABI) > - Diag(E->getLocEnd(), diag::err_indirection_requires_nonfragile_object) > - << E->getType(); > - else > - Diag(E->getLocEnd(), diag::err_direct_interface_unsupported) > - << E->getType(); > - return StmtError(); > - } > // C99 6.8.3p2: The expression in an expression statement is evaluated as a > // void expression for its side effects. Conversion to void allows any > // operand, even incomplete types. > > Added: cfe/trunk/test/CodeGenObjC/return-objc-object.mm > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/return-objc-object.mm?rev=110832&view=auto > ============================================================================== > --- cfe/trunk/test/CodeGenObjC/return-objc-object.mm (added) > +++ cfe/trunk/test/CodeGenObjC/return-objc-object.mm Wed Aug 11 12:37:35 2010 > @@ -0,0 +1,19 @@ > +// RUN: %clang_cc1 -triple x86_64 -emit-llvm -o - %s | FileCheck %s > + > +...@protocol P1 @end > +...@interface NSOperationQueue > +{ > + char ch[64]; > + double d; > +} > +...@end > + > +NSOperationQueue &f(); > +NSOperationQueue<P1> &f1(); > + > +void call_once() { > + f(); > + f1(); > +} > +// CHECK: call %0* @_Z1fv() > +// CHECK: call %0* @_Z2f1v() > > Modified: cfe/trunk/test/SemaObjC/deref-interface.m > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/deref-interface.m?rev=110832&r1=110831&r2=110832&view=diff > ============================================================================== > --- cfe/trunk/test/SemaObjC/deref-interface.m (original) > +++ cfe/trunk/test/SemaObjC/deref-interface.m Wed Aug 11 12:37:35 2010 > @@ -1,4 +1,5 @@ > // RUN: %clang_cc1 -fobjc-nonfragile-abi -verify -fsyntax-only %s > +// XFAIL: *
Um? This is missing an explanation. - Daniel > �...@interface NSView > - (id)initWithView:(id)realView; > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
