[COMMITTED 083/141] gccrs: Add comments to resolve_segments

arthur.cohen@embecosm.com arthur.cohen@embecosm.com
Mon Mar 24 12:45:06 GMT 2025


From: Owen Avery <powerboat9.gamer@gmail.com>

gcc/rust/ChangeLog:

	* resolve/rust-forever-stack.hxx
	(ForeverStack::resolve_segments): Add comments explaining
	the behaviour of a while loop.

Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
---
 gcc/rust/resolve/rust-forever-stack.hxx | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/gcc/rust/resolve/rust-forever-stack.hxx b/gcc/rust/resolve/rust-forever-stack.hxx
index d2020554f74..8abe8a61acb 100644
--- a/gcc/rust/resolve/rust-forever-stack.hxx
+++ b/gcc/rust/resolve/rust-forever-stack.hxx
@@ -464,8 +464,17 @@ ForeverStack<N>::resolve_segments (
 
       tl::optional<typename ForeverStack<N>::Node &> child = tl::nullopt;
 
+      /*
+       * On every iteration this loop either
+       *
+       * 1. terminates
+       * 2. decreases the depth of the node pointed to by current_node
+       *
+       * This ensures termination
+       */
       while (true)
 	{
+	  // may set the value of child
 	  for (auto &kv : current_node->children)
 	    {
 	      auto &link = kv.first;
@@ -508,6 +517,8 @@ ForeverStack<N>::resolve_segments (
 	  current_node = &current_node->parent.value ();
 	}
 
+      // if child didn't contain a value
+      // the while loop above should have return'd or kept looping
       current_node = &child.value ();
       insert_segment_resolution (outer_seg, current_node->id);
     }
-- 
2.45.2



More information about the Gcc-rust mailing list