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>>

Reply via email to