aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2010-09-13 16:09:44 +0000
committerFariborz Jahanian <fjahanian@apple.com>2010-09-13 16:09:44 +0000
commitfb550312e74e2a04e93963891aa517d7acfc971b (patch)
tree07298f42ec169f52584e2b955212fea0f6e47513
parent99a8ca0bdbf97f7b05f3f8aed05ff495caea5b84 (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.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"