https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99833
Marek Polacek <mpolacek at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2021-03-30 Keywords| |ice-on-valid-code Target Milestone|--- |8.5 Status|UNCONFIRMED |NEW Summary|structured binding + if |[8/9/10/11 Regression] |init + generic lambda = |structured binding + if |internal compiler error |init + generic lambda = | |internal compiler error CC| |mpolacek at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Marek Polacek <mpolacek at gcc dot gnu.org> --- Confirmed. $ xg++-7 -c 99833.C -std=c++17 -fconcepts # ok $ xg++-8 -c 99833.C -std=c++17 -fconcepts 99833.C: In instantiation of ‘f(auto:1&&) [with auto:1 = int]::<lambda(auto:2 ...)> [with auto:2 = {}]’: 99833.C:8:10: required from ‘auto f(auto:1&&) [with auto:1 = int]’ 99833.C:12:13: required from here 99833.C:6:32: internal compiler error: in tsubst_decomp_names, at cp/pt.c:16673 if constexpr (auto [_, z] = y; requires { z; }) ^~~~~~ 0xa44cc6 tsubst_decomp_names /home/mpolacek/src/gcc8/gcc/cp/pt.c:16673 0xa46041 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/mpolacek/src/gcc8/gcc/cp/pt.c:16837 0xa4b103 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/mpolacek/src/gcc8/gcc/cp/pt.c:17512 0xa46e75 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/mpolacek/src/gcc8/gcc/cp/pt.c:16961 0xa45012 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/mpolacek/src/gcc8/gcc/cp/pt.c:16714 0xa475be tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/mpolacek/src/gcc8/gcc/cp/pt.c:17014 0xa475be tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/mpolacek/src/gcc8/gcc/cp/pt.c:17014 0xa45012 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/mpolacek/src/gcc8/gcc/cp/pt.c:16714 0xa475be tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/mpolacek/src/gcc8/gcc/cp/pt.c:17014 0xa68a40 instantiate_decl(tree_node*, bool, bool) /home/mpolacek/src/gcc8/gcc/cp/pt.c:24161 0x90b1e3 maybe_instantiate_decl /home/mpolacek/src/gcc8/gcc/cp/decl2.c:5211 0x90bb8a mark_used(tree_node*, int) /home/mpolacek/src/gcc8/gcc/cp/decl2.c:5312 0x814c71 build_over_call /home/mpolacek/src/gcc8/gcc/cp/call.c:8286 0x804e91 build_op_call_1 /home/mpolacek/src/gcc8/gcc/cp/call.c:4589 0x805053 build_op_call(tree_node*, vec<tree_node*, va_gc, vl_embed>**, int) /home/mpolacek/src/gcc8/gcc/cp/call.c:4618 0xa9a847 finish_call_expr(tree_node*, vec<tree_node*, va_gc, vl_embed>**, bool, bool, int) /home/mpolacek/src/gcc8/gcc/cp/semantics.c:2567 0xa503bf tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) /home/mpolacek/src/gcc8/gcc/cp/pt.c:18594 0xa4b422 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/mpolacek/src/gcc8/gcc/cp/pt.c:17530 0xa4512d tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/mpolacek/src/gcc8/gcc/cp/pt.c:16728 0xa45012 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/mpolacek/src/gcc8/gcc/cp/pt.c:16714