OK. Merged in r293797. Thanks, Hans
On Wed, Feb 1, 2017 at 9:50 AM, Alex L <arpha...@gmail.com> wrote: > Hi Hans, > > Would it be possible to merge this for 4.0? > > Cheers, > Alex > > On 1 February 2017 at 17:37, Alex Lorenz via cfe-commits > <cfe-commits@lists.llvm.org> wrote: >> >> Author: arphaman >> Date: Wed Feb 1 11:37:28 2017 >> New Revision: 293787 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=293787&view=rev >> Log: >> [CodeGen][ObjC] Avoid asserting on block pointer types in >> isPointerZeroInitializable >> >> rdar://30111891 >> >> Added: >> cfe/trunk/test/CodeGenObjC/block-ptr-type-crash.m >> Modified: >> cfe/trunk/lib/CodeGen/CodeGenTypes.cpp >> >> Modified: cfe/trunk/lib/CodeGen/CodeGenTypes.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenTypes.cpp?rev=293787&r1=293786&r2=293787&view=diff >> >> ============================================================================== >> --- cfe/trunk/lib/CodeGen/CodeGenTypes.cpp (original) >> +++ cfe/trunk/lib/CodeGen/CodeGenTypes.cpp Wed Feb 1 11:37:28 2017 >> @@ -738,7 +738,7 @@ CodeGenTypes::getCGRecordLayout(const Re >> } >> >> bool CodeGenTypes::isPointerZeroInitializable(QualType T) { >> - assert (T->isAnyPointerType() && "Invalid type"); >> + assert((T->isAnyPointerType() || T->isBlockPointerType()) && "Invalid >> type"); >> return isZeroInitializable(T); >> } >> >> >> Added: cfe/trunk/test/CodeGenObjC/block-ptr-type-crash.m >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/block-ptr-type-crash.m?rev=293787&view=auto >> >> ============================================================================== >> --- cfe/trunk/test/CodeGenObjC/block-ptr-type-crash.m (added) >> +++ cfe/trunk/test/CodeGenObjC/block-ptr-type-crash.m Wed Feb 1 11:37:28 >> 2017 >> @@ -0,0 +1,28 @@ >> +// 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 >> >> >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > > _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits