https://gcc.gnu.org/g:f9dce5e97dd9a6a3f618ced89f5e05729b0d5fe8

commit r15-8838-gf9dce5e97dd9a6a3f618ced89f5e05729b0d5fe8
Author: Owen Avery <powerboat9.ga...@gmail.com>
Date:   Tue Feb 18 03:56:33 2025 -0500

    gccrs: nr2.0: Set the node id of the root node
    
    gcc/rust/ChangeLog:
    
            * resolve/rust-forever-stack.h
            (ForeverStack::ForeverStack): Set the node id of the root node
            to that of the current crate.
            * resolve/rust-forever-stack.hxx
            (ForeverStack::find_starting_point): Use the node id of the root
            node during resolution of crate segments.
    
    gcc/testsuite/ChangeLog:
    
            * rust/compile/nr2/exclude: Remove entries.
    
    Signed-off-by: Owen Avery <powerboat9.ga...@gmail.com>

Diff:
---
 gcc/rust/resolve/rust-forever-stack.h   | 7 +++++--
 gcc/rust/resolve/rust-forever-stack.hxx | 7 +------
 gcc/testsuite/rust/compile/nr2/exclude  | 2 --
 3 files changed, 6 insertions(+), 10 deletions(-)

diff --git a/gcc/rust/resolve/rust-forever-stack.h 
b/gcc/rust/resolve/rust-forever-stack.h
index f1e5e8d2f2d1..64e8a0f0f2c9 100644
--- a/gcc/rust/resolve/rust-forever-stack.h
+++ b/gcc/rust/resolve/rust-forever-stack.h
@@ -547,13 +547,16 @@ template <Namespace N> class ForeverStack
 {
 public:
   ForeverStack ()
-    // FIXME: Is that valid? Do we use the root? If yes, we should give the
-    // crate's node id to ForeverStack's constructor
     : root (Node (Rib (Rib::Kind::Normal), UNKNOWN_NODEID)),
       cursor_reference (root)
   {
     rust_assert (root.is_root ());
     rust_assert (root.is_leaf ());
+
+    // TODO: Should we be using the forever stack root as the crate scope?
+    // TODO: Is this how we should be getting the crate node id?
+    auto &mappings = Analysis::Mappings::get ();
+    root.id = *mappings.crate_num_to_nodeid (mappings.get_current_crate ());
   }
 
   /**
diff --git a/gcc/rust/resolve/rust-forever-stack.hxx 
b/gcc/rust/resolve/rust-forever-stack.hxx
index 9ca8db2c09d3..c1407344b523 100644
--- a/gcc/rust/resolve/rust-forever-stack.hxx
+++ b/gcc/rust/resolve/rust-forever-stack.hxx
@@ -401,12 +401,7 @@ ForeverStack<N>::find_starting_point (
       if (seg.is_crate_path_seg ())
        {
          starting_point = root;
-         // TODO: is this how we should be getting the crate node id?
-         auto &mappings = Analysis::Mappings::get ();
-         NodeId current_crate
-           = *mappings.crate_num_to_nodeid (mappings.get_current_crate ());
-
-         insert_segment_resolution (outer_seg, current_crate);
+         insert_segment_resolution (outer_seg, starting_point.get ().id);
          iterator++;
          break;
        }
diff --git a/gcc/testsuite/rust/compile/nr2/exclude 
b/gcc/testsuite/rust/compile/nr2/exclude
index 763387f35488..e179dc30004b 100644
--- a/gcc/testsuite/rust/compile/nr2/exclude
+++ b/gcc/testsuite/rust/compile/nr2/exclude
@@ -1,7 +1,6 @@
 break-rust2.rs
 canonical_paths1.rs
 cfg1.rs
-complex-path1.rs
 const_generics_3.rs
 const_generics_4.rs
 feature_rust_attri0.rs
@@ -29,7 +28,6 @@ pub_restricted_2.rs
 pub_restricted_3.rs
 redef_error2.rs
 redef_error5.rs
-self-path1.rs
 self-path2.rs
 sizeof-stray-infer-var-bug.rs
 struct-expr-parse.rs

Reply via email to