From: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com>

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>
---
 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 5668d4d65d3..11ff25062d0 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;
-- 
2.45.2

Reply via email to