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