aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/CodeGen/CGBlocks.h2
-rw-r--r--test/CodeGenObjC/blocks-1.m14
2 files changed, 16 insertions, 0 deletions
diff --git a/lib/CodeGen/CGBlocks.h b/lib/CodeGen/CGBlocks.h
index 58276c294d..e065e003d4 100644
--- a/lib/CodeGen/CGBlocks.h
+++ b/lib/CodeGen/CGBlocks.h
@@ -207,6 +207,8 @@ public:
return true;
if (getContext().isObjCNSObjectType(Ty))
return true;
+ if (getContext().isObjCObjectPointerType(Ty))
+ return true;
return false;
}
};
diff --git a/test/CodeGenObjC/blocks-1.m b/test/CodeGenObjC/blocks-1.m
new file mode 100644
index 0000000000..f7bbc32244
--- /dev/null
+++ b/test/CodeGenObjC/blocks-1.m
@@ -0,0 +1,14 @@
+// RUN: clang-cc %s -emit-llvm -o %t -fblocks &&
+// RUN: grep "_Block_object_dispose" %t | count 2 &&
+// RUN: grep "__copy_helper_block_" %t | count 2 &&
+// RUN: grep "__destroy_helper_block_" %t | count 2 &&
+// RUN: grep "__Block_byref_id_object_copy_" %t | count 0 &&
+// RUN: grep "__Block_byref_id_object_dispose_" %t | count 0 &&
+// RUN: grep "i32 135)" %t | count 0 &&
+// RUN: grep "_Block_object_assign" %t | count 2
+
+@interface NSDictionary @end
+
+void test1(NSDictionary * dict) {
+ ^{ (void)dict; }();
+}