Commit a6a1d3f3 authored by Hans Wennborg's avatar Hans Wennborg
Browse files

Merging r293787:

------------------------------------------------------------------------
r293787 | arphaman | 2017-02-01 09:37:28 -0800 (Wed, 01 Feb 2017) | 5 lines

[CodeGen][ObjC] Avoid asserting on block pointer types in
isPointerZeroInitializable

rdar://30111891

------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_40@293797 91177308-0d34-0410-b5e6-96231b3b80d8
parent ccd67298
......@@ -737,7 +737,7 @@ CodeGenTypes::getCGRecordLayout(const RecordDecl *RD) {
}
bool CodeGenTypes::isPointerZeroInitializable(QualType T) {
assert (T->isAnyPointerType() && "Invalid type");
assert((T->isAnyPointerType() || T->isBlockPointerType()) && "Invalid type");
return isZeroInitializable(T);
}
......
// RUN: %clang_cc1 -Wno-objc-root-class -fblocks -o /dev/null -triple x86_64-- -emit-llvm %s
// REQUIRES: asserts
// Verify there is no assertion.
// rdar://30111891
typedef unsigned long long uint64_t;
typedef enum AnEnum : uint64_t AnEnum;
enum AnEnum: uint64_t {
AnEnumA
};
typedef void (^BlockType)();
@interface MyClass
@end
@implementation MyClass
- (void)_doStuff {
struct {
int identifier;
AnEnum type;
BlockType handler;
} var = {
"hello",
AnEnumA,
((void *)0)
};
}
@end
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment