[PATCH] D69950: Reapply "Fix crash on switch conditions of non-integer types in templates"

Martin Storsjö via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Dec 5 11:02:04 PST 2019


mstorsjo added a comment.

In D69950#1771133 <https://reviews.llvm.org/D69950#1771133>, @eandrews wrote:

> In D69950#1770138 <https://reviews.llvm.org/D69950#1770138>, @mstorsjo wrote:
>
> > This (when reapplied in https://reviews.llvm.org/rG878a24ee244a24c39d1c57e9af2) broke compilation of code that earlier built fine. A reduced example:
> >
> >   namespace glslang {
> >   class TPoolAllocator {
> >     void operator=(TPoolAllocator);
> >   };
> >   template <class> class a {
> >     TPoolAllocator *b;
> >     void c() { allocator = *b; }
> >     TPoolAllocator allocator;
> >   };
> >   } // namespace glslang
> >
>
>
> With this patch, some errors in templates are diagnosed earlier (i.e. does not wait till instantiation). Since 'allocator' and 'b' aren't dependent, I think this is a valid diagnosis. GCC throws an error on this code upon instantiation. https://godbolt.org/z/X9Y-Vy


The original non-reduced case does build fine with GCC though (I'm fairly sure). I can try to reduce one later that still builds with GCC but fails with current clang.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69950/new/

https://reviews.llvm.org/D69950





More information about the cfe-commits mailing list