diff --git a/hercules_cg/src/sched_ir.rs b/hercules_cg/src/sched_ir.rs
index 6a482443eaf39c6f3b87c7b19ec06adbe67ff5ad..acbc74d2e3101eec164f90c5632099c8f1fe8935 100644
--- a/hercules_cg/src/sched_ir.rs
+++ b/hercules_cg/src/sched_ir.rs
@@ -412,6 +412,19 @@ impl SInst {
         }
     }
 
+    pub fn is_branch(&self) -> bool {
+        if let SInst::Branch {
+            cond: _,
+            false_target: _,
+            true_target: _,
+        } = self
+        {
+            true
+        } else {
+            false
+        }
+    }
+
     pub fn is_partition_exit(&self) -> bool {
         if let SInst::PartitionExit { data_outputs: _ } = self {
             true
@@ -429,7 +442,7 @@ impl SInst {
     }
 
     pub fn is_terminator(&self) -> bool {
-        self.is_jump() || self.is_partition_exit() || self.is_return()
+        self.is_jump() || self.is_branch() || self.is_partition_exit() || self.is_return()
     }
 
     pub fn try_thread_id(&self) -> Option<(usize, ForkJoinID)> {