r293787 - [CodeGen][ObjC] Avoid asserting on block pointer types in

Alex L via cfe-commits cfe-commits at lists.llvm.org
Thu Feb 2 02:26:36 PST 2017


Thanks!

On 1 February 2017 at 18:57, Hans Wennborg <hans at chromium.org> wrote:

> OK. Merged in r293797.
>
> Thanks,
> Hans
>
> On Wed, Feb 1, 2017 at 9:50 AM, Alex L <arphaman at 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 at 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)();
> >> + at interface MyClass
> >> + at end
> >> + at implementation MyClass
> >> +- (void)_doStuff {
> >> +  struct {
> >> +    int identifier;
> >> +    AnEnum type;
> >> +    BlockType handler;
> >> +  } var = {
> >> +    "hello",
> >> +    AnEnumA,
> >> +    ((void *)0)
> >> +  };
> >> +}
> >> + at end
> >>
> >>
> >> _______________________________________________
> >> cfe-commits mailing list
> >> cfe-commits at lists.llvm.org
> >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170202/b785cd57/attachment-0001.html>


More information about the cfe-commits mailing list