https://gcc.gnu.org/g:ff388c8b1ca6f8f6e42a7a0a5388b18aed5a4176
commit r15-8416-gff388c8b1ca6f8f6e42a7a0a5388b18aed5a4176 Author: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com> Date: Thu Sep 26 23:17:59 2024 +0200 gccrs: Postpone break on error after name resolution We need the top level to run at least once before breaking because it will be required by the other name resolution steps. gcc/rust/ChangeLog: * rust-session-manager.cc (Session::expansion): Break on error after top level name resolution. Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com> Diff: --- gcc/rust/rust-session-manager.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gcc/rust/rust-session-manager.cc b/gcc/rust/rust-session-manager.cc index 5668d4d65d39..11ff25062d04 100644 --- a/gcc/rust/rust-session-manager.cc +++ b/gcc/rust/rust-session-manager.cc @@ -925,9 +925,6 @@ Session::expansion (AST::Crate &crate, Resolver2_0::NameResolutionContext &ctx) { CfgStrip ().go (crate); // Errors might happen during cfg strip pass - if (saw_errors ()) - break; - bool visitor_dirty = false; if (flag_name_resolution_2_0) @@ -940,6 +937,9 @@ Session::expansion (AST::Crate &crate, Resolver2_0::NameResolutionContext &ctx) else Resolver::EarlyNameResolver ().go (crate); + if (saw_errors ()) + break; + ExpandVisitor (expander).go (crate); fixed_point_reached = !expander.has_changed () && !visitor_dirty;