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

Reply via email to