]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: enr: Fetch module items during early name resolution
authorArthur Cohen <arthur.cohen@embecosm.com>
Thu, 2 Mar 2023 15:56:33 +0000 (16:56 +0100)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 16 Jan 2024 17:21:09 +0000 (18:21 +0100)
This is important as public macros can be present in other modules,
which would otherwise not be loaded until the expansion phase
happening right after the early name resolution.

gcc/rust/ChangeLog:

* resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit): Move
unloaded module item loading to...
* expand/rust-attribute-visitor.cc (AttrVisitor::visit): ...here.

gcc/rust/expand/rust-attribute-visitor.cc
gcc/rust/resolve/rust-early-name-resolver.cc

index 3b3bb3a17ebd3cbd763d711409566d28c8f06b2b..1365cb8c74ad68e39245b69f4b957abed8c0e381 100644 (file)
@@ -2148,15 +2148,6 @@ AttrVisitor::visit (AST::Module &module)
        }
     }
 
-  // Parse the module's items if they haven't been expanded and the file
-  // should be parsed (i.e isn't hidden behind an untrue or impossible cfg
-  // directive)
-  if (!module.is_marked_for_strip ()
-      && module.get_kind () == AST::Module::ModuleKind::UNLOADED)
-    {
-      module.load_items ();
-    }
-
   // strip items if required
   expand_pointer_allow_strip (module.get_items ());
 }
index c6cbdb0a21bde4cfac6b91cfcb772b45b8b42742..1dfbff56c2f9e392c2dd666f23c4cc53c7d8c1eb 100644 (file)
@@ -581,6 +581,12 @@ EarlyNameResolver::visit (AST::Method &method)
 void
 EarlyNameResolver::visit (AST::Module &module)
 {
+  // Parse the module's items if they haven't been expanded and the file
+  // should be parsed (i.e isn't hidden behind an untrue or impossible cfg
+  // directive)
+  if (module.get_kind () == AST::Module::UNLOADED)
+    module.load_items ();
+
   scoped (module.get_node_id (), [&module, this] () {
     for (auto &item : module.get_items ())
       item->accept_vis (*this);