From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2153) id 9DB61398C036; Thu, 17 Sep 2020 16:46:08 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9DB61398C036 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1600361168; bh=PUjIoPPvQZDOVHUCyClbNxcXR+VrCzog7VAbvMtjK5k=; h=From:To:Subject:Date:From; b=UY5CiHYV0Zrp0TIrefkTFMxYOownu9QbHnhd0iIZI2Sq/l8I1GXHjvqOswet6rJqr 1mESeXcXMzMY6VU55Djk1E3FfnZXiwWQQQ8xWJG+v9+ty8hGTVdPGquStk60cZBPQo SHAgjodUDtmrIJ5BsBS+aCJRacxheFYKNYgFgCMU= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Jakub Jelinek To: gcc-cvs@gcc.gnu.org Subject: [gcc(refs/vendors/redhat/heads/gcc-8-branch)] PR c++/89917 - ICE with lambda in variadic mem-init. X-Act-Checkin: gcc X-Git-Author: Jason Merrill X-Git-Refname: refs/vendors/redhat/heads/gcc-8-branch X-Git-Oldrev: dbfe8775e356dd83b2feced7dd8e94f10bde7f76 X-Git-Newrev: 5a359c34bd4de7dcd74881fb9ec897c7bd1ea9c9 Message-Id: <20200917164608.9DB61398C036@sourceware.org> Date: Thu, 17 Sep 2020 16:46:08 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Sep 2020 16:46:08 -0000 https://gcc.gnu.org/g:5a359c34bd4de7dcd74881fb9ec897c7bd1ea9c9 commit 5a359c34bd4de7dcd74881fb9ec897c7bd1ea9c9 Author: Jason Merrill Date: Tue Feb 25 13:37:18 2020 -0500 PR c++/89917 - ICE with lambda in variadic mem-init. A mem-initializer is not a type, and we don't want to turn autos within it into packs. gcc/cp/ChangeLog 2020-02-25 Jason Merrill PR c++/89917 - ICE with lambda in variadic mem-init. * pt.c (make_pack_expansion): Change type_pack_expansion_p to false. Diff: --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/pt.c | 2 +- gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic8.C | 14 ++++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ffb25f3ab95..a1fee505da6 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2020-02-25 Jason Merrill + + PR c++/89917 - ICE with lambda in variadic mem-init. + * pt.c (make_pack_expansion): Change type_pack_expansion_p to false. + 2020-02-24 Jason Merrill PR c++/90951 diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 6dc455ac326..2dc5af44394 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -3944,7 +3944,7 @@ make_pack_expansion (tree arg, tsubst_flags_t complain) class expansion. */ ppd.visited = new hash_set; ppd.parameter_packs = ¶meter_packs; - ppd.type_pack_expansion_p = true; + ppd.type_pack_expansion_p = false; gcc_assert (TYPE_P (TREE_PURPOSE (arg))); cp_walk_tree (&TREE_PURPOSE (arg), &find_parameter_packs_r, &ppd, ppd.visited); diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic8.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic8.C new file mode 100644 index 00000000000..50473f70214 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic8.C @@ -0,0 +1,14 @@ +// PR c++/89917 +// { dg-do compile { target c++11 } } + +struct A +{ + A(...); +}; + +template struct B : T... +{ + B() : T([]{})... {} +}; + +B b;