https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84376
Bug ID: 84376 Summary: [7/8 Regression] ICE with missing template parameter Product: gcc Version: 8.0 Status: UNCONFIRMED Keywords: ice-on-invalid-code Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: reichelt at gcc dot gnu.org Target Milestone: --- The following invalid code snippet (compiled with "-std=c++1z") triggers an ICE since GCC 7.1.0: ================================================= template<int> struct A {}; template<typename T> T foo() { return T(); } template<> A foo<A>(); ================================================= bug.cc:5:21: internal compiler error: tree check: expected identifier_node, have template_id_expr in dguide_name_p, at cp/pt.c:25461 template<> A foo<A>(); ^ 0x78a296 tree_check_failed(tree_node const*, char const*, int, char const*, ...) ../../gcc/gcc/tree.c:9335 0x63283b tree_check(tree_node*, char const*, int, char const*, tree_code) ../../gcc/gcc/tree.h:3132 0x63283b dguide_name_p(tree_node*) ../../gcc/gcc/cp/pt.c:25461 0x8a1be9 grokdeclarator(cp_declarator const*, cp_decl_specifier_seq*, decl_context, int, tree_node**) ../../gcc/gcc/cp/decl.c:11020 0x8a49e6 start_decl(cp_declarator const*, cp_decl_specifier_seq*, int, tree_node*, tree_node*, tree_node**) ../../gcc/gcc/cp/decl.c:4950 0x934399 cp_parser_init_declarator ../../gcc/gcc/cp/parser.c:19569 0x93abea cp_parser_single_declaration ../../gcc/gcc/cp/parser.c:27141 0x93b7f7 cp_parser_explicit_specialization ../../gcc/gcc/cp/parser.c:16637 0x9409b6 cp_parser_declaration ../../gcc/gcc/cp/parser.c:12707 0x940c41 cp_parser_declaration_seq_opt ../../gcc/gcc/cp/parser.c:12637 0x940f34 cp_parser_translation_unit ../../gcc/gcc/cp/parser.c:4559 0x940f34 c_parse_file() ../../gcc/gcc/cp/parser.c:38857 0xa3f566 c_common_parse_file() ../../gcc/gcc/c-family/c-opts.c:1132 Please submit a full bug report, [etc.]