https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99153
--- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Nathan Sidwell <nat...@gcc.gnu.org>: https://gcc.gnu.org/g:c49fcfddaa47f2828fe2af11ae857cd67f53e23f commit r11-7322-gc49fcfddaa47f2828fe2af11ae857cd67f53e23f Author: Nathan Sidwell <nat...@acm.org> Date: Mon Feb 22 06:43:32 2021 -0800 c++: cross-header-unit template definitions [PR 99153] A member function can be defined in a different header-file than the one defining the class. In such situations we must unmark the decl as imported. When the entity is a template we failed to unmark the template_decl. Perhaps the duplication of these flags on the template_decl from the underlying decl is an error. I set on the fence about it for a long time during development, but I don't think now is the time to change that (barring catastrophic bugs). PR c++/99153 gcc/cp/ * decl.c (duplicate_decls): Move DECL_MODULE_IMPORT_P propagation to common-path. * module.cc (set_defining_module): Add assert. gcc/testsuite/ * g++.dg/modules/pr99153_a.H: New. * g++.dg/modules/pr99153_b.H: New.