PR c++/84036 - ICE with variadic capture.
commitb448c6f36d154157db6effb46e446e79f766da81
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 12 Feb 2018 01:21:39 +0000 (12 01:21 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 12 Feb 2018 01:21:39 +0000 (12 01:21 +0000)
tree6015b7020be9ee3d06dffafcd87f625e23b96749
parentf7b4f826b2db734dd01fda934e27e0ef86a6a178
PR c++/84036 - ICE with variadic capture.

Handle variadic capture proxies more like non-variadic.
* lambda.c (build_capture_proxy): Remove workaround.
* pt.c (find_parameter_packs_r): The proxy is a pack.
(instantiate_class_template_1): Remove dead lambda code.
(extract_fnparm_pack): Don't make_pack_expansion.
(extract_locals_r): Don't strip a pack expansion.
(tsubst_pack_expansion): Handle proxy packs.  Use
PACK_EXPANSION_EXTRA_ARGS less.
(tsubst_decl) [FIELD_DECL]: Don't register_specialization.
(tsubst_copy) [FIELD_DECL]: Don't retrieve*_specialization.
[VAR_DECL]: Handle ARGUMENT_PACK_SELECT.
(tsubst_expr) [DECL_EXPR]: Handle proxy packs.
(tsubst_copy_and_build) [VAR_DECL]: Handle proxy packs normally.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257575 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/cp/ChangeLog
gcc/cp/lambda.c
gcc/cp/pt.c
gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic11.C [new file with mode: 0644]