From 11a751ff77fba92de77b099ec5e1896d3a99d482 Mon Sep 17 00:00:00 2001 From: Nicholas Krause Date: Tue, 23 Jun 2020 15:47:37 -0400 Subject: [PATCH] c++: Handle bad pack expansion in base list. [PR96752] This fixes 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. Tested on powerpc64le-unknown-linux-gnu. gcc/cp/ChangeLog: PR c++/95672 * typeck2.c (cxx_incomplete_type_diagnostic): Add missing TYPE_EXPANSION_PACK check for diagnosing incomplete types in cxx_incomplete_type_diagnostic. gcc/testsuite/ChangeLog: PR c++/95672 * g++.dg/template/pr95672.C: New test. Signed-off-by: Nicholas Krause --- gcc/cp/typeck2.c | 5 +++++ gcc/testsuite/g++.dg/template/pr95672.C | 3 +++ 2 files changed, 8 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..dac135a2e11 100644 --- a/gcc/cp/typeck2.c +++ b/gcc/cp/typeck2.c @@ -552,6 +552,11 @@ 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..c752b4a2c08 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/pr95672.C @@ -0,0 +1,3 @@ +// PR c++/95672 +// { dg-do compile { target c++14 } } +struct g_class : decltype (auto) ... { }; // { dg-error "invalid use of pack expansion" }