From 513c6f7d047370b23302352920ff1d58164f872e Mon Sep 17 00:00:00 2001
From: Russel Arbore <russel.jma@gmail.com>
Date: Tue, 5 Mar 2024 20:24:11 -0600
Subject: [PATCH] cleanup forkify, fix loop_false_read deletion

---
 hercules_opt/src/forkify.rs | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/hercules_opt/src/forkify.rs b/hercules_opt/src/forkify.rs
index 18dfe36a..478fb3d5 100644
--- a/hercules_opt/src/forkify.rs
+++ b/hercules_opt/src/forkify.rs
@@ -154,9 +154,6 @@ pub fn forkify(
         let join_id = NodeID::new(function.nodes.len());
         function.nodes.push(join);
 
-        // Reconnect control nodes.
-        get_uses_mut(&mut function.nodes[loop_dst.idx()]).map(loop_false_read, join_id);
-
         // Convert reducing phi nodes to reduce nodes.
         let reduction_phis: Vec<_> = def_use
             .get_users(header)
@@ -219,15 +216,18 @@ pub fn forkify(
         let thread_id = Node::ThreadID { control: fork_id };
         let thread_id_id = NodeID::new(function.nodes.len());
         function.nodes.push(thread_id);
+
         for user in def_use.get_users(idx_phi) {
             get_uses_mut(&mut function.nodes[user.idx()]).map(idx_phi, thread_id_id);
         }
-        function.nodes[idx_phi.idx()] = Node::Start;
-
-        // Delete old loop control nodes;
         for user in def_use.get_users(header) {
             get_uses_mut(&mut function.nodes[user.idx()]).map(header, fork_id);
         }
+        for user in def_use.get_users(loop_false_read) {
+            get_uses_mut(&mut function.nodes[user.idx()]).map(loop_false_read, join_id);
+        }
+
+        function.nodes[idx_phi.idx()] = Node::Start;
         function.nodes[header.idx()] = Node::Start;
         function.nodes[loop_end.idx()] = Node::Start;
         function.nodes[loop_true_read.idx()] = Node::Start;
-- 
GitLab