diff --git a/juno_samples/fork_join_tests/src/blah.sch b/juno_samples/fork_join_tests/src/blah.sch
deleted file mode 100644
index 52dea702fc0c9057d764eb25f60a27aa52c7a530..0000000000000000000000000000000000000000
--- a/juno_samples/fork_join_tests/src/blah.sch
+++ /dev/null
@@ -1,34 +0,0 @@
-
-xdot[true](*);
-
-fixpoint panic after 20 {
-  forkify(*);
-  fork-guard-elim(*);
-  fork-coalesce(*);
-  dce(*);
-}
-
-xdot[true](*);
-
-//gvn(*);
-//phi-elim(*);
-//dce(*);
-
-//gvn(*);
-//phi-elim(*);
-//dce(*);
-
-//fixpoint panic after 20 {
-//  infer-schedules(*);
-//}
-
-//fork-split(*);
-//gvn(*);
-//phi-elim(*);
-//dce(*);
-//unforkify(*);
-//gvn(*);
-//phi-elim(*);
-//dce(*);
-
-//gcm(*);
diff --git a/juno_samples/fork_join_tests/src/cpu.sch b/juno_samples/fork_join_tests/src/cpu.sch
index 3b672846fbf5ff73bdb688e2bcc3167c9e22814f..fd3fc0ff350fb158fbedb55bf0eb6e5c9182ab89 100644
--- a/juno_samples/fork_join_tests/src/cpu.sch
+++ b/juno_samples/fork_join_tests/src/cpu.sch
@@ -5,7 +5,7 @@ gvn(*);
 phi-elim(*);
 dce(*);
 
-let auto = auto-outline(test1, test2, test3, test4, test5, test7);
+let auto = auto-outline(test1, test2, test3, test4, test5, test7, test8);
 cpu(auto.test1);
 cpu(auto.test2);
 cpu(auto.test3);
@@ -50,12 +50,8 @@ gvn(*);
 phi-elim(*);
 dce(*);
 
-
 fork-tile[32, 0, true](test6@loop);
 let out = fork-split(test6@loop);
-
-let fission = fork-fission-bufferize[test8@loop, test8@bufferize1](auto.test8);
-
 let out = outline(out.test6.fj1);
 cpu(out);
 ip-sroa(*);
@@ -75,4 +71,10 @@ dce(auto.test7);
 simplify-cfg(auto.test7);
 dce(auto.test7);
 
+let fission = fork-fission-bufferize[test8@loop, test8@bufferize1](auto.test8);
+dce(auto.test8);
+unforkify(auto.test8);
+ccp(auto.test8);
+dce(auto.test8);
+
 gcm(*);
diff --git a/juno_samples/fork_join_tests/src/fork_join_tests.jn b/juno_samples/fork_join_tests/src/fork_join_tests.jn
index bc89b2e2aa78f4aba908838cfb8314bb3b9171b6..a765726f84070769153117bbaa644626b87a44a8 100644
--- a/juno_samples/fork_join_tests/src/fork_join_tests.jn
+++ b/juno_samples/fork_join_tests/src/fork_join_tests.jn
@@ -82,7 +82,7 @@ fn test6(input: i32) -> i32[1024] {
   return arr;
 }
 
-
+#[entry]
 fn test7(input: i32) -> i32 {
   let arr : i32[32];
   for i = 0 to 32 {
diff --git a/juno_scheduler/src/pm.rs b/juno_scheduler/src/pm.rs
index f762e5ffd1bb6f5fa7a32d88ebd8d4f2260e2244..58ff399f7acb7e2093a226de7ecb551a88d835c2 100644
--- a/juno_scheduler/src/pm.rs
+++ b/juno_scheduler/src/pm.rs
@@ -2094,7 +2094,7 @@ fn run_pass(
             let nodes_in_fork_joins = pm.nodes_in_fork_joins.take().unwrap();
 
             // assert only one function is in the selection.
-            let num_functions = build_selection(pm, selection.clone())
+            let num_functions = build_selection(pm, selection.clone(), false)
                 .iter()
                 .filter(|func| func.is_some())
                 .count();
@@ -2106,9 +2106,8 @@ fn run_pass(
             let fork_label = fork_labels[0].label;
             let data_label = fork_data_labels[0].label;
 
-            // Only one func is_some().
             for ((((func, fork_join_map), loop_tree), typing), nodes_in_fork_joins) in
-                build_selection(pm, selection)
+                build_selection(pm, selection, false)
                     .into_iter()
                     .zip(fork_join_maps.iter())
                     .zip(loops.iter())