diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc index a52dc0c7850f..da9d29b4b01e 100644 --- a/gcc/cp/module.cc +++ b/gcc/cp/module.cc @@ -14231,8 +14231,8 @@ instantiating_tu_local_entity (tree decl) return false; tree origin = get_originating_module_decl (decl); - if (!DECL_LANG_SPECIFIC (origin) - || !DECL_MODULE_IMPORT_P (origin)) + if (!DECL_LANG_SPECIFIC (STRIP_TEMPLATE (origin)) + || !DECL_MODULE_IMPORT_P (STRIP_TEMPLATE (origin))) return false; /* Referencing TU-local entities from a header is generally OK. diff --git a/gcc/testsuite/g++.dg/modules/internal-18.C b/gcc/testsuite/g++.dg/modules/internal-18.C new file mode 100644 index 000000000000..3f9102a1d477 --- /dev/null +++ b/gcc/testsuite/g++.dg/modules/internal-18.C @@ -0,0 +1,9 @@ +// PR c++/122628 +// { dg-additional-options "-fmodules" } + +template static void baz(T) {} +template static void bar(T) { baz(0); } + +void foo() { + bar(0); +}