Block description for trivial block literals have

their 'isa' field scanned regardless.

llvm-svn: 113749
This commit is contained in:
Fariborz Jahanian 2010-09-13 16:09:44 +00:00
parent 9aae728ef6
commit 0aa35b9cf5
2 changed files with 9 additions and 2 deletions

View 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();

View 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"