https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99496

Nathan Sidwell <nathan at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2021-03-12
     Ever confirmed|0                           |1

--- Comment #11 from Nathan Sidwell <nathan at gcc dot gnu.org> ---
With the spec hasher returning a constant zero:

// pr99496_a.H
template<typename...> using __void_t = void;

template<typename _Tp, typename = void>
struct __is_referenceable
{ };

template<typename _Tp>
struct __is_referenceable<_Tp, __void_t<_Tp&>>
{ };

template<typename _Tp, bool = __is_referenceable<_Tp>::value>
struct __is_copy_constructible_impl;

// pr99496_b.C
import "pr99496_a.H";


zathras:180>./cc1plus -quiet -fmodule-header pr99496_a.H && ./cc1plus -quiet
-fmodules-ts pr99496_b.C -fno-module-lazy
pr99496_b.C:3:22: internal compiler error: same canonical type node for
different types 'void' and '__void_t<_Tp&>'
    3 | import "pr99496_a.H";
      |                      ^
0xeb18c7 comptypes(tree_node*, tree_node*, int)
        ../../../src/gcc/cp/typeck.c:1554
0xdd03a8 template_args_equal(tree_node*, tree_node*, bool)
        ../../../src/gcc/cp/pt.c:9211
0xdd05ce comp_template_args(tree_node*, tree_node*, tree_node**, tree_node**,
bool)
        ../../../src/gcc/cp/pt.c:9258
0xdb023c spec_hasher::equal(spec_entry*, spec_entry*)
        ../../../src/gcc/cp/pt.c:1725
0xe37e23 hash_table<spec_hasher, false,
xcallocator>::find_slot_with_hash(spec_entry* const&, unsigned int,
insert_option)
        ../../../src/gcc/hash-table.h:981
0xe35749 add_mergeable_specialization(bool, spec_entry*, tree_node*, unsigned
int)
        ../../../src/gcc/cp/pt.c:30022
0xcce825 trees_in::decl_value()
        ../../../src/gcc/cp/module.cc:8064
0xcd3f61 trees_in::tree_node(bool)
        ../../../src/gcc/cp/module.cc:9170

Reply via email to