On Mon, Jun 22, 2020 at 06:55:01PM -0400, Nicholas Krause via Gcc-patches wrote: > > > On 6/22/20 5:51 PM, Jason Merrill wrote: > > On 6/22/20 4:01 PM, Nicholas Krause wrote: > > > From: Nicholas Krause <xerofo...@gmail.com> > > > > > > This fixs the PR95672 by adding the missing TYPE_PACK_EXPANSION case in > > > cxx_incomplete_type_diagnostic in order to avoid ICES on diagnosing > > > incomplete template pack expansion cases. In v2, add the missing required > > > test case for all new patches. v3 Fixes both the test case to compile in > > > C++11 mode and the message to print out only the type. v4 fixes the > > > testcase > > > to only target C++11. v5 fixes test case to run properly. > > > > > > gcc/cp/ChangeLog: > > > > > >     * typeck2.c (cxx_incomplete_type_diagnostic): Add missing > > > TYPE_EXPANSION_PACK > > >      check for diagnosticing incomplete types in > > > cxx_incomplete_type_diagnostic. > > > > > > gcc/testsuite/ChangeLog: > > > > > >     * g++.dg/template/PR95672.C: New test. > > > > > > Signed-off-by: Nicholas Krause <xerofo...@gmail.com> > > > --- > > >  gcc/cp/typeck2.c                       | 6 > > > ++++++ > > >  gcc/testsuite/g++.dg/template/PR95672.C | 3 +++ > > >  2 files changed, 9 insertions(+) > > >  create mode 100644 gcc/testsuite/g++.dg/template/PR95672.C > > > > > > diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c > > > index 5fd3b82fa89..28b32fe0b5a 100644 > > > --- a/gcc/cp/typeck2.c > > > +++ b/gcc/cp/typeck2.c > > > @@ -552,6 +552,12 @@ cxx_incomplete_type_diagnostic (location_t loc, > > > const_tree value, > > >                 TYPE_NAME (type)); > > >        break; > > > +   case TYPE_PACK_EXPANSION: > > > +    emit_diagnostic (diag_kind, loc, 0, > > > +            "invalid use of pack expansion %qT", > > > +             type); > > > +     break; > > > + > > >      case TYPENAME_TYPE: > > >      case DECLTYPE_TYPE: > > >        emit_diagnostic (diag_kind, loc, 0, > > > diff --git a/gcc/testsuite/g++.dg/template/PR95672.C > > > b/gcc/testsuite/g++.dg/template/PR95672.C > > > new file mode 100644 > > > index 00000000000..fcc3da0a132 > > > --- /dev/null > > > +++ b/gcc/testsuite/g++.dg/template/PR95672.C > > > @@ -0,0 +1,3 @@ > > > +//c++ PR96572 > > > +// { dg-do compile { target c++11 } } > > > +struct g_class : decltype (auto) ... { } ; // { dg-error "invalid > > > use of pack expansion" } > > > > FAIL: g++.dg/template/PR95672.C -std=c++11 (test for errors, line 3) > > FAIL: g++.dg/template/PR95672.C -std=c++11 (test for excess errors) > > > > It seems to pass for me with make check RUNTESTFLAGS=dg.exp=PR96752.ext
That doesn't test anything at all, because it's the wrong filename and the wrong suffix. Use GXX_TESTSUITE_STDS=98,11,14,17,2a make check-c++ RUNTESTFLAGS=dg.exp=PR95672.C Marek