[cfe-commits] r110832 - in /cfe/trunk: lib/CodeGen/CodeGenFunction.cpp lib/Sema/SemaStmt.cpp test/CodeGenObjC/return-objc-object.mm test/SemaObjC/deref-interface.m

Daniel Dunbar daniel at zuster.org
Sun Aug 15 13:47:52 PDT 2010


Hi Fariborz,

On Wed, Aug 11, 2010 at 10:37 AM, Fariborz Jahanian <fjahanian at apple.com> 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
> +
> + at protocol P1 @end
> + at interface NSOperationQueue
> +{
> +  char ch[64];
> +  double d;
> +}
> + at 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
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>




More information about the cfe-commits mailing list