aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorOwen Avery <powerboat9.gamer@gmail.com>2025-02-17 18:33:08 -0500
committerPhilip Herron <philip.herron@embecosm.com>2025-02-19 08:36:23 +0000
commit8dc95df84e3473fe699e957f8a69827fc841541a (patch)
tree435a507b19c81d671d3eb101afb4b21d3631caa2 /gcc
parent7afc39068eb803ae2937ab6d22f93ab68d627173 (diff)
downloadgcc-8dc95df84e3473fe699e957f8a69827fc841541a.zip
gcc-8dc95df84e3473fe699e957f8a69827fc841541a.tar.gz
gcc-8dc95df84e3473fe699e957f8a69827fc841541a.tar.bz2
Add comments to resolve_segments
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>
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rust/resolve/rust-forever-stack.hxx11
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/rust/resolve/rust-forever-stack.hxx b/gcc/rust/resolve/rust-forever-stack.hxx
index 39c623c..5dd3413 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);
}