diff --git a/hercules_cg/src/rt.rs b/hercules_cg/src/rt.rs
index 88e8487cc76445b63fee279adb1b5e3948b5866d..313f7c10ad8b4d56c8b5a45bc7aca315aab0f807 100644
--- a/hercules_cg/src/rt.rs
+++ b/hercules_cg/src/rt.rs
@@ -1361,8 +1361,8 @@ impl<'a> RTContext<'a> {
     fn get_value(&self, id: NodeID, bb: NodeID, lhs: bool) -> String {
         let func = self.get_func();
         if let Some((control, _, _)) = func.nodes[id.idx()].try_reduce()
-            && let fork = self.join_fork_map[&control]
-            && !self.nodes_in_fork_joins[&fork].contains(&bb)
+            && (control == bb
+                || !self.nodes_in_fork_joins[&self.join_fork_map[&control]].contains(&bb))
         {
             format!("reduce_{}", id.idx())
         } else if func.nodes[id.idx()].is_call()