https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99201
Bug ID: 99201 Summary: ICE in tsubst_copy, at cp/pt.c:16581 Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: kretz at kde dot org Target Milestone: --- Testcase (reduced with C-Vise from valid code): template <class, class... F> void test_values_2arg(int, int, F... fun_pack) { [] {}(fun_pack()...); } template <typename TestF, typename RefF> auto make_tester(TestF, RefF) { return [](auto...) { [](auto... vs) { if constexpr ([&] { reffun(vs...); }) ; }; }; } void test() { auto __trans_tmp_1 = make_tester([] {}, [] {}); test_values_2arg<int>({}, {}, __trans_tmp_1); } ice.cpp: In instantiation of 'make_tester<test()::<lambda()>, test()::<lambda()> >::<lambda(auto:1 ...)> [with auto:1 = {}]': ice.cpp:2: required from 'void test_values_2arg(int, int, F ...) [with <template-parameter-1-1> = int; F = {make_tester<test()::<lambda()>, test()::<lambda()> >::<lambda(auto:1 ...)>}]' ice.cpp:14: required from here ice.cpp:7: internal compiler error: in tsubst_copy, at cp/pt.c:16581 7 | if constexpr ([&] { reffun(vs...); }) | ^~ 0x66f262 tsubst_copy /home/mkretz/src/gcc-simd/gcc/cp/pt.c:16581 0x804fae tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) /home/mkretz/src/gcc-simd/gcc/cp/pt.c:20719 0x804e6b tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) /home/mkretz/src/gcc-simd/gcc/cp/pt.c:19497 0x804e6b tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) /home/mkretz/src/gcc-simd/gcc/cp/pt.c:20841 0x816cc4 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) /home/mkretz/src/gcc-simd/gcc/cp/pt.c:19497 0x816cc4 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/mkretz/src/gcc-simd/gcc/cp/pt.c:19107 0x815dec tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/mkretz/src/gcc-simd/gcc/cp/pt.c:18132 0x815dec tsubst_pack_expansion(tree_node*, tree_node*, int, tree_node*) /home/mkretz/src/gcc-simd/gcc/cp/pt.c:13148 0x806acd tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) /home/mkretz/src/gcc-simd/gcc/cp/pt.c:20148 0x816cc4 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) /home/mkretz/src/gcc-simd/gcc/cp/pt.c:19497 0x816cc4 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/mkretz/src/gcc-simd/gcc/cp/pt.c:19107 0x817cee tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/mkretz/src/gcc-simd/gcc/cp/pt.c:18132 0x817cee tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/mkretz/src/gcc-simd/gcc/cp/pt.c:18177 0x818893 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/mkretz/src/gcc-simd/gcc/cp/pt.c:18132 0x818893 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/mkretz/src/gcc-simd/gcc/cp/pt.c:18147 0x8177da tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/mkretz/src/gcc-simd/gcc/cp/pt.c:18132 0x8177da tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/mkretz/src/gcc-simd/gcc/cp/pt.c:18498 0x8177da tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/mkretz/src/gcc-simd/gcc/cp/pt.c:18132 0x8177da tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/mkretz/src/gcc-simd/gcc/cp/pt.c:18498 0x81f84b tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/mkretz/src/gcc-simd/gcc/cp/pt.c:18132