https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89766
Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |marxin at gcc dot gnu.org --- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> --- I can reproduce that, but only with GCC tip: gcc version 8.3.1 20190319 (GCC) $ ./xg++ -B. /home/marxin/Programming/testcases/pr89766.cpp -c -fchecking -std=c++17 --param ggc-min-expand=0 --param ggc-min-heapsize=0 /home/marxin/Programming/testcases/pr89766.cpp:7:47: internal compiler error: canonical types differ for identical types ‘a’ and ‘<template-parameter-2-1>’ template <typename, typename> bool e() const; ^ 0xa1338f comptypes(tree_node*, tree_node*, int) ../../gcc/cp/typeck.c:1480 0x98bae1 comp_template_parms(tree_node const*, tree_node const*) ../../gcc/cp/pt.c:3302 0x8579e5 add_method(tree_node*, tree_node*, bool) ../../gcc/cp/class.c:1062 0x9e201c finish_member_declaration(tree_node*) ../../gcc/cp/semantics.c:3114 0x95ffa5 cp_parser_template_declaration_after_parameters ../../gcc/cp/parser.c:27077 0x960419 cp_parser_explicit_template_declaration ../../gcc/cp/parser.c:27236 0x960473 cp_parser_template_declaration_after_export ../../gcc/cp/parser.c:27255 0x94bcfd cp_parser_template_declaration ../../gcc/cp/parser.c:15026 0x95a413 cp_parser_member_declaration ../../gcc/cp/parser.c:23552 0x95a306 cp_parser_member_specification_opt ../../gcc/cp/parser.c:23479 0x95891e cp_parser_class_specifier_1 ../../gcc/cp/parser.c:22610 0x95936a cp_parser_class_specifier ../../gcc/cp/parser.c:22872 0x94e900 cp_parser_type_specifier ../../gcc/cp/parser.c:16788 0x949dd0 cp_parser_decl_specifier_seq ../../gcc/cp/parser.c:13626 0x960585 cp_parser_single_declaration ../../gcc/cp/parser.c:27307 0x95fc98 cp_parser_template_declaration_after_parameters ../../gcc/cp/parser.c:26999 0x960419 cp_parser_explicit_template_declaration ../../gcc/cp/parser.c:27236 0x960473 cp_parser_template_declaration_after_export ../../gcc/cp/parser.c:27255 0x94bcfd cp_parser_template_declaration ../../gcc/cp/parser.c:15026 0x94824b cp_parser_declaration ../../gcc/cp/parser.c:12724 (gdb) p debug_tree(t1) <template_type_parm 0x7ffff7a32dc8 a VOID align:8 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7ffff7a32a80 index 0 level 2 orig_level 2 chain <type_decl 0x7ffff79fcd10 a>> $3 = void (gdb) p debug_tree(t2) <template_type_parm 0x7ffff7a47348 VOID align:8 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7ffff7a32f18 index 0 level 2 orig_level 2 chain <type_decl 0x7ffff79fce40 D.2149>> (gdb) p debug_tree((tree)0x7ffff7a32a80) <template_type_parm 0x7ffff7a32a80 a VOID align:8 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7ffff7a32a80 index 0 level 2 orig_level 2 chain <type_decl 0x7ffff79fca18 a>> (gdb) p debug_tree((tree)0x7ffff7a32f18) <template_type_parm 0x7ffff7a32f18 VOID align:8 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7ffff7a32f18 index 0 level 2 orig_level 2 chain <type_decl 0x7ffff79fc720 D.2127>>