https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97671
Bug ID: 97671 Summary: ICE: tree check: expected var_decl or function_decl or field_decl or type_decl or concept_decl or template_decl, have parm_decl in push_template_decl, at cp/pt.c:6102 Product: gcc Version: 11.0 Status: UNCONFIRMED Keywords: ice-on-invalid-code Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- g++-11.0.0-alpha20201101 snapshot (g:590febb5f6624f78b36402a7c9a9c318978f1efa) ICEs when compiling the following testcase, reduced from test/SemaTemplate/dependent-expr.cpp from the clang 10.0.1 test suite: void k7 (auto fe) { [] (auto fe, int = ({decltype (fe) k7; k7 * 2;})) {} (fe); } % g++-11.0.0 -fconcepts-ts -c gtrqdjtk.cpp gtrqdjtk.cpp: In function 'void k7(auto:1)': gtrqdjtk.cpp:4:38: internal compiler error: tree check: expected var_decl or function_decl or field_decl or type_decl or concept_decl or template_decl, have parm_decl in push_template_decl, at cp/pt.c:6102 4 | [] (auto fe, int = ({decltype (fe) k7; k7 * 2;})) {} (fe); | ^~ 0x7dedcc tree_check_failed(tree_node const*, char const*, int, char const*, ...) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201101/work/gcc-11-20201101/gcc/tree.c:9731 0x66c54c template_info_decl_check(tree_node const*, char const*, int, char const*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201101/work/gcc-11-20201101/gcc/cp/cp-tree.h:633 0x691e00 template_info_decl_check(tree_node const*, char const*, int, char const*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201101/work/gcc-11-20201101/gcc/tree.h:3427 0x691e00 push_template_decl(tree_node*, bool) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201101/work/gcc-11-20201101/gcc/cp/pt.c:6102 0x940831 start_decl(cp_declarator const*, cp_decl_specifier_seq*, int, tree_node*, tree_node*, tree_node**) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201101/work/gcc-11-20201101/gcc/cp/decl.c:5403 0x9f36d1 cp_parser_init_declarator /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201101/work/gcc-11-20201101/gcc/cp/parser.c:20944 0x9d2b2e cp_parser_simple_declaration /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201101/work/gcc-11-20201101/gcc/cp/parser.c:13888 0x9d4adc cp_parser_declaration_statement /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201101/work/gcc-11-20201101/gcc/cp/parser.c:13328 0x9d57af cp_parser_statement /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201101/work/gcc-11-20201101/gcc/cp/parser.c:11574 0x9d688d cp_parser_statement_seq_opt /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201101/work/gcc-11-20201101/gcc/cp/parser.c:11940 0x9d6968 cp_parser_compound_statement /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201101/work/gcc-11-20201101/gcc/cp/parser.c:11890 0x9d9593 cp_parser_statement_expr /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201101/work/gcc-11-20201101/gcc/cp/parser.c:4993 0x9d9593 cp_parser_primary_expression /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201101/work/gcc-11-20201101/gcc/cp/parser.c:5400 0x9e2f52 cp_parser_postfix_expression /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201101/work/gcc-11-20201101/gcc/cp/parser.c:7332 0x9c4292 cp_parser_binary_expression /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201101/work/gcc-11-20201101/gcc/cp/parser.c:9652 0x9c60bc cp_parser_assignment_expression /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201101/work/gcc-11-20201101/gcc/cp/parser.c:9957 0x9c4bcd cp_parser_constant_expression /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201101/work/gcc-11-20201101/gcc/cp/parser.c:10251 0x9c5411 cp_parser_initializer_clause /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201101/work/gcc-11-20201101/gcc/cp/parser.c:23418 0x9ca07c cp_parser_initializer /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201101/work/gcc-11-20201101/gcc/cp/parser.c:23356 0x9f0b11 cp_parser_default_argument /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201101/work/gcc-11-20201101/gcc/cp/parser.c:23237