]> granicus.if.org Git - clang/commitdiff
Block description for trivial block literals have
authorFariborz Jahanian <fjahanian@apple.com>
Mon, 13 Sep 2010 16:09:44 +0000 (16:09 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Mon, 13 Sep 2010 16:09:44 +0000 (16:09 +0000)
their 'isa' field scanned regardless.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113749 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGObjCMac.cpp
test/CodeGenObjC/block-var-layout.m

index 73074b6bbe5285085e8db03c601bd203450ca6de..766703d9e72f6b8586f5bd6865ccfb4782082e13 100644 (file)
@@ -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();
index c2a01d35fe09174022f8023d9237777ad6955e00..7031224d06eff8de5274f99642ea1d290a4fa2ce 100644 (file)
@@ -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"