https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83529
Bug ID: 83529 Summary: ICE in canonical types differ for identical types Product: gcc Version: unknown Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org CC: jason at gcc dot gnu.org Target Milestone: --- All releases supporting c++11 ICE with -fchecking: $ cat ice2.ii template < typename d, typename > using g = d; template < typename d, typename e > auto h(d, e ) -> g< d, e >; template < long, typename > class i; template < unsigned long j, unsigned b, typename k > constexpr i< h(j, b), k > h(); template < unsigned long j, unsigned b, typename k > constexpr i< h(j, b), k > h(); $ g++ ice2.ii -fchecking ice2.ii:7:29: internal compiler error: canonical types differ for identical types ‘i<h(j, b), k>’ and ‘i<h(j, b), k>’ constexpr i< h(j, b), k > h(); ^ 0x84cf30 comptypes(tree_node*, tree_node*, int) ../../gcc/cp/typeck.c:1480 0x6a2d3b decls_match(tree_node*, tree_node*, bool) ../../gcc/cp/decl.c:1046 0x6a30a4 decls_match(tree_node*, tree_node*, bool) ../../gcc/cp/decl.c:1112 0x6a3571 duplicate_decls(tree_node*, tree_node*, bool) ../../gcc/cp/decl.c:1385 0x73bf01 do_pushdecl ../../gcc/cp/name-lookup.c:3035 0x73bf01 pushdecl(tree_node*, bool) ../../gcc/cp/name-lookup.c:3160 0x73dc47 do_pushdecl_with_scope ../../gcc/cp/name-lookup.c:3987 0x73de2f pushdecl_namespace_level(tree_node*, bool) ../../gcc/cp/name-lookup.c:5161 0x7ec434 push_template_decl_real(tree_node*, bool) ../../gcc/cp/pt.c:5599 0x6ba1d7 start_decl(cp_declarator const*, cp_decl_specifier_seq*, int, tree_node*, tree_node*, tree_node**) ../../gcc/cp/decl.c:5126 0x777317 cp_parser_init_declarator ../../gcc/cp/parser.c:19546 0x77ec1a cp_parser_single_declaration ../../gcc/cp/parser.c:27121 0x77ee0c cp_parser_template_declaration_after_parameters ../../gcc/cp/parser.c:26723 0x77f79e cp_parser_explicit_template_declaration ../../gcc/cp/parser.c:26960 0x77f79e cp_parser_template_declaration_after_export ../../gcc/cp/parser.c:26979 0x785b69 cp_parser_declaration ../../gcc/cp/parser.c:12685 0x785e9b cp_parser_declaration_seq_opt ../../gcc/cp/parser.c:12612 0x7861a0 cp_parser_translation_unit ../../gcc/cp/parser.c:4558 0x7861a0 c_parse_file() ../../gcc/cp/parser.c:38749 0x8cc956 c_common_parse_file() ../../gcc/c-family/c-opts.c:1127