Tested x86_64-pc-linux-gnu, applying to trunk. -- 8< --
This affected std::views in module std. gcc/cp/ChangeLog: * name-lookup.cc (do_namespace_alias): set_originating_module after pushdecl. gcc/testsuite/ChangeLog: * g++.dg/modules/namespace-7_a.C: New test. * g++.dg/modules/namespace-7_b.C: New test. --- gcc/cp/name-lookup.cc | 8 ++++++-- gcc/testsuite/g++.dg/modules/namespace-7_a.C | 14 ++++++++++++++ gcc/testsuite/g++.dg/modules/namespace-7_b.C | 8 ++++++++ 3 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/g++.dg/modules/namespace-7_a.C create mode 100644 gcc/testsuite/g++.dg/modules/namespace-7_b.C diff --git a/gcc/cp/name-lookup.cc b/gcc/cp/name-lookup.cc index 72fd4850646..2dca57a14fd 100644 --- a/gcc/cp/name-lookup.cc +++ b/gcc/cp/name-lookup.cc @@ -6620,9 +6620,13 @@ do_namespace_alias (tree alias, tree name_space) DECL_EXTERNAL (alias) = 1; DECL_CONTEXT (alias) = FROB_CONTEXT (current_scope ()); TREE_PUBLIC (alias) = TREE_PUBLIC (DECL_CONTEXT (alias)); - set_originating_module (alias); - pushdecl (alias); + alias = pushdecl (alias); + + if (!DECL_P (alias) || !DECL_NAMESPACE_ALIAS (alias)) + return; + + set_originating_module (alias); /* Emit debug info for namespace alias. */ if (!building_stmt_list_p ()) diff --git a/gcc/testsuite/g++.dg/modules/namespace-7_a.C b/gcc/testsuite/g++.dg/modules/namespace-7_a.C new file mode 100644 index 00000000000..dc2717daf48 --- /dev/null +++ b/gcc/testsuite/g++.dg/modules/namespace-7_a.C @@ -0,0 +1,14 @@ +// { dg-additional-options "-fmodules -Wno-global-module" } + +module; + +namespace B { int i; } +namespace C = B; + +export module foo; +// { dg-module-cmi foo } + +export { + namespace B { using B::i; } + namespace C = B; +} diff --git a/gcc/testsuite/g++.dg/modules/namespace-7_b.C b/gcc/testsuite/g++.dg/modules/namespace-7_b.C new file mode 100644 index 00000000000..21abf9466be --- /dev/null +++ b/gcc/testsuite/g++.dg/modules/namespace-7_b.C @@ -0,0 +1,8 @@ +// { dg-additional-options "-fmodules" } + +import foo; + +int main() +{ + C::i = 42; +} base-commit: 236104908257d779b06894379f99e007a1c4c897 -- 2.47.0