aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorArthur Cohen <arthur.cohen@embecosm.com>2023-03-02 16:56:33 +0100
committerPhilip Herron <philip.herron@embecosm.com>2023-03-13 18:11:30 +0000
commit362c6d7f14bfc84a670bd84a4ea11ae3da916fa9 (patch)
treed60405c1095437ddaa1e98f2d23f65ff9d92a4a3 /gcc
parent98363db00799b353cbbc8ab9c55ecf28d298363a (diff)
downloadgcc-362c6d7f14bfc84a670bd84a4ea11ae3da916fa9.zip
gcc-362c6d7f14bfc84a670bd84a4ea11ae3da916fa9.tar.gz
gcc-362c6d7f14bfc84a670bd84a4ea11ae3da916fa9.tar.bz2
enr: Fetch module items during early name resolution
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.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rust/expand/rust-attribute-visitor.cc9
-rw-r--r--gcc/rust/resolve/rust-early-name-resolver.cc6
2 files changed, 6 insertions, 9 deletions
diff --git a/gcc/rust/expand/rust-attribute-visitor.cc b/gcc/rust/expand/rust-attribute-visitor.cc
index d416505..13ae28c 100644
--- a/gcc/rust/expand/rust-attribute-visitor.cc
+++ b/gcc/rust/expand/rust-attribute-visitor.cc
@@ -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 ());
}
diff --git a/gcc/rust/resolve/rust-early-name-resolver.cc b/gcc/rust/resolve/rust-early-name-resolver.cc
index 6985228..b3fb5a8 100644
--- a/gcc/rust/resolve/rust-early-name-resolver.cc
+++ b/gcc/rust/resolve/rust-early-name-resolver.cc
@@ -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);