https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99071
--- Comment #1 from Nathan Sidwell <nathan at gcc dot gnu.org> --- Reduced testcase: // 99071_a.H template<typename T> void begin (T *); // 99071_b.H import "99071_a.H"; template<typename T> void begin(T &); ./cc1plus -fmodule-header -quiet -std=c++17 99071_a.H ./cc1plus -fmodule-header -quiet -std=c++17 99071_b.H 99071_b.H:4:15: internal compiler error: tree check: expected binding_vector, have overload in maybe_record_mergeable_decl, at cp/name-lookup.c:3528 4 | void begin(T &); | ^ 0x1c561e8 tree_check_failed(tree_node const*, char const*, int, char const*, ...) ../../../src/gcc/tree.c:9814 0xa0e321 tree_check(tree_node*, char const*, int, char const*, tree_code) ../../../src/gcc/tree.h:3349 0xc75e3b maybe_record_mergeable_decl ../../../src/gcc/cp/name-lookup.c:3528 0xc7780c do_pushdecl ../../../src/gcc/cp/name-lookup.c:3850 0xc7b29d do_pushdecl_with_scope ../../../src/gcc/cp/name-lookup.c:4850 0xc805d8 pushdecl_namespace_level(tree_node*, bool) ../../../src/gcc/cp/name-lookup.c:6212