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"