diff --git a/lib/CodeGen/CGObjCMac.cpp b/lib/CodeGen/CGObjCMac.cpp index 73074b6bbe5285085e8db03c601bd203450ca6de..766703d9e72f6b8586f5bd6865ccfb4782082e13 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 c2a01d35fe09174022f8023d9237777ad6955e00..7031224d06eff8de5274f99642ea1d290a4fa2ce 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"