Skip to content

Commit

Permalink
nr2.0: Set the node id of the root node
Browse files Browse the repository at this point in the history
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.gamer@gmail.com>
  • Loading branch information
powerboat9 authored and P-E-P committed Mar 10, 2025
1 parent f88af61 commit 6029cc9
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 10 deletions.
7 changes: 5 additions & 2 deletions gcc/rust/resolve/rust-forever-stack.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 ());
}

/**
Expand Down
7 changes: 1 addition & 6 deletions gcc/rust/resolve/rust-forever-stack.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down
2 changes: 0 additions & 2 deletions gcc/testsuite/rust/compile/nr2/exclude
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 6029cc9

Please sign in to comment.