diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2010-09-13 16:09:44 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2010-09-13 16:09:44 +0000 |
commit | fb550312e74e2a04e93963891aa517d7acfc971b (patch) | |
tree | 07298f42ec169f52584e2b955212fea0f6e47513 | |
parent | 99a8ca0bdbf97f7b05f3f8aed05ff495caea5b84 (diff) |
Block description for trivial block literals have
their 'isa' field scanned regardless.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113749 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/CodeGen/CGObjCMac.cpp | 3 | ||||
-rw-r--r-- | test/CodeGenObjC/block-var-layout.m | 8 |
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" |