From 4927abdc2e8c630117261fd9266304290b1cf32f Mon Sep 17 00:00:00 2001 From: Mike Stump Date: Wed, 25 Mar 2009 18:05:39 +0000 Subject: [PATCH] Remove -f__block as codegen for __block variables should be solid. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67697 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/CGBlocks.cpp | 22 ------------------ test/CodeGen/blocks-1.c | 2 +- test/CodeGenObjC/blocks-unsupported.m | 32 --------------------------- 3 files changed, 1 insertion(+), 55 deletions(-) delete mode 100644 test/CodeGenObjC/blocks-unsupported.m diff --git a/lib/CodeGen/CGBlocks.cpp b/lib/CodeGen/CGBlocks.cpp index eba741bc3c..db1539bd63 100644 --- a/lib/CodeGen/CGBlocks.cpp +++ b/lib/CodeGen/CGBlocks.cpp @@ -25,14 +25,6 @@ using namespace CodeGen; // Temporary code to enable testing of __block variables // #include "clang/Frontend/CompileOptions.h" #include "llvm/Support/CommandLine.h" -static llvm::cl::opt -Enable__block("f__block", - // See all the FIXMEs for the various work that needs to be done - llvm::cl::desc("temporary option to turn on __block precessing " - "even though the code isn't done yet"), - llvm::cl::ValueDisallowed, llvm::cl::AllowInverse, - llvm::cl::ZeroOrMore, - llvm::cl::init(true)); llvm::Constant *CodeGenFunction:: BuildDescriptorBlockDecl(bool BlockHasCopyDispose, uint64_t Size, @@ -166,9 +158,6 @@ llvm::Value *CodeGenFunction::BuildBlockLiteralTmp(const BlockExpr *BE) { BlockHasCopyDispose |= subBlockHasCopyDispose; Elts[3] = Fn; - if (!Enable__block && BlockHasCopyDispose) - ErrorUnsupported(BE, "block literal that requires copy/dispose"); - if (subBlockHasCopyDispose) flags |= BLOCK_HAS_COPY_DISPOSE; @@ -488,17 +477,6 @@ llvm::Value *CodeGenFunction::GetAddrOfBlockDecl(const BlockDeclRefExpr *E) { const llvm::Type *Ty; Ty = CGM.getTypes().ConvertType(E->getDecl()->getType()); - if (!Enable__block && E->isByRef()) - ErrorUnsupported(E, "__block variable in block literal"); - else if (!Enable__block && E->getType()->isBlockPointerType()) - ErrorUnsupported(E, "block pointer in block literal"); - else if (!Enable__block && (E->getDecl()->getAttr() || - getContext().isObjCNSObjectType(E->getType()))) - ErrorUnsupported(E, "__attribute__((NSObject)) variable in block " - "literal"); - else if (!Enable__block && getContext().isObjCObjectPointerType(E->getType())) - ErrorUnsupported(E, "Objective-C variable in block literal"); - // See if we have already allocated an offset for this variable. if (offset == 0) { // Don't run the expensive check, unless we have to. diff --git a/test/CodeGen/blocks-1.c b/test/CodeGen/blocks-1.c index d6fc159520..f2677f3c27 100644 --- a/test/CodeGen/blocks-1.c +++ b/test/CodeGen/blocks-1.c @@ -1,4 +1,4 @@ -// RUN: clang-cc %s -emit-llvm -o %t -fblocks -f__block && +// RUN: clang-cc %s -emit-llvm -o %t -fblocks && // RUN: grep "_Block_object_dispose" %t | count 15 && // RUN: grep "__copy_helper_block_" %t | count 12 && // RUN: grep "__destroy_helper_block_" %t | count 12 && diff --git a/test/CodeGenObjC/blocks-unsupported.m b/test/CodeGenObjC/blocks-unsupported.m deleted file mode 100644 index e3faea995e..0000000000 --- a/test/CodeGenObjC/blocks-unsupported.m +++ /dev/null @@ -1,32 +0,0 @@ -// RUN: clang-cc -fblocks -fno-__block -fnext-runtime --emit-llvm -o %t %s -verify - -@class Foo; -@protocol P; - -void t1() -{ - __block int a; - ^{ a = 10; }(); // expected-error {{cannot compile this __block variable in block literal yet}} expected-error {{cannot compile this block literal that requires copy/dispose yet}} - - void (^block)(void); - ^{ (void)block; }(); // expected-error {{cannot compile this block pointer in block literal yet}} expected-error {{cannot compile this block literal that requires copy/dispose yet}} - - struct Foo *__attribute__ ((NSObject)) foo; - ^{ (void)foo; }(); // expected-error {{cannot compile this __attribute__((NSObject)) variable in block literal yet}} expected-error {{cannot compile this block literal that requires copy/dispose yet}} - - typedef struct CGColor * __attribute__ ((NSObject)) CGColorRef; - CGColorRef color; - ^{ (void)color; }(); // expected-error {{cannot compile this __attribute__((NSObject)) variable in block literal yet}} expected-error {{cannot compile this block literal that requires copy/dispose yet}} - - id a1; - ^{ (void)a1; }(); // expected-error {{cannot compile this Objective-C variable in block literal yet}} expected-error {{cannot compile this block literal that requires copy/dispose yet}} - - Foo *a2; - ^{ (void)a2; }(); // expected-error {{cannot compile this Objective-C variable in block literal yet}} expected-error {{cannot compile this block literal that requires copy/dispose yet}} - - id

a3; - ^{ (void)a3; }(); // expected-error {{cannot compile this Objective-C variable in block literal yet}} expected-error {{cannot compile this block literal that requires copy/dispose yet}} - - Foo

*a4; - ^{ (void)a4; }(); // expected-error {{cannot compile this Objective-C variable in block literal yet}} expected-error {{cannot compile this block literal that requires copy/dispose yet}} -} -- 2.40.0