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