aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/CodeGen/CGObjCMac.cpp3
-rw-r--r--test/CodeGenObjC/block-var-layout.m8
2 files changed, 9 insertions, 2 deletions
diff --git a/lib/CodeGen/CGObjCMac.cpp b/lib/CodeGen/CGObjCMac.cpp
index 73074b6bbe..766703d9e7 100644
--- a/lib/CodeGen/CGObjCMac.cpp
+++ b/lib/CodeGen/CGObjCMac.cpp
@@ -1666,8 +1666,7 @@ llvm::Constant *CGObjCCommonMac::GCBlockLayout(CodeGen::CodeGenFunction &CGF,
const llvm::SmallVectorImpl<const Expr *> &BlockLayout) {
llvm::Constant *NullPtr =
llvm::Constant::getNullValue(llvm::Type::getInt8PtrTy(VMContext));
- if ((CGM.getLangOptions().getGCMode() == LangOptions::NonGC) ||
- BlockLayout.empty())
+ if (CGM.getLangOptions().getGCMode() == LangOptions::NonGC)
return NullPtr;
bool hasUnion = false;
SkipIvars.clear();
diff --git a/test/CodeGenObjC/block-var-layout.m b/test/CodeGenObjC/block-var-layout.m
index c2a01d35fe..7031224d06 100644
--- a/test/CodeGenObjC/block-var-layout.m
+++ b/test/CodeGenObjC/block-var-layout.m
@@ -123,6 +123,11 @@ void notifyBlock(id dependentBlock) {
wrapperBlock();
}
+void test_empty_block() {
+ void (^wrapperBlock)() = ^() {
+ };
+ wrapperBlock();
+}
// CHECK-LP64: L_OBJC_CLASS_NAME_:
// CHECK-LP64-NEXT: .asciz "\0011\024"
@@ -141,3 +146,6 @@ void notifyBlock(id dependentBlock) {
// CHECK-LP64: L_OBJC_CLASS_NAME_16:
// CHECK-LP64-NEXT: .asciz "\0013"
+
+// CHECK-LP64: L_OBJC_CLASS_NAME_20:
+// CHECK-LP64-NEXT: .asciz "\001"