diff --git a/hercules_opt/src/outline.rs b/hercules_opt/src/outline.rs
index c66933368aec08f9d3ea268549585a8282afa6ab..088e57750df0265883472ab111d5d0a6e5f21c6e 100644
--- a/hercules_opt/src/outline.rs
+++ b/hercules_opt/src/outline.rs
@@ -25,6 +25,7 @@ pub fn outline(
     dom: &DomTree,
     mut partition: BTreeSet<NodeID>,
     to_be_function_id: FunctionID,
+    outline_scalar_constants: bool,
 ) -> Option<Function> {
     // Step 1: do a whole bunch of analysis on the partition.
     let nodes = &editor.func().nodes;
@@ -34,12 +35,14 @@ pub fn outline(
             .any(|id| nodes[id.idx()].is_start() || nodes[id.idx()].is_parameter() || nodes[id.idx()].is_return()),
         "PANIC: Can't outline a partition containing the start node, parameter nodes, or return nodes."
     );
-    for (idx, node) in nodes.into_iter().enumerate() {
-        if let Node::Constant { id } = node
-            && editor.get_constant(*id).is_scalar()
-        {
-            // Usually, you don't want to explicitly outline scalar constants.
-            partition.remove(&NodeID::new(idx));
+    if !outline_scalar_constants {
+        for (idx, node) in nodes.into_iter().enumerate() {
+            if let Node::Constant { id } = node
+                && editor.get_constant(*id).is_scalar()
+            {
+                // Usually, you don't want to explicitly outline scalar constants.
+                partition.remove(&NodeID::new(idx));
+            }
         }
     }
     let mut top_nodes = partition.iter().filter(|id| {
@@ -621,5 +624,6 @@ pub fn dumb_outline(
         dom,
         partition,
         to_be_function_id,
+        true,
     )
 }
diff --git a/juno_scheduler/src/pm.rs b/juno_scheduler/src/pm.rs
index 44b14257cdcdc0e56d315e2a7059c14c62a399b7..675cfe1ca9f25f74f7c6ad3c969f3d2b9b9524fd 100644
--- a/juno_scheduler/src/pm.rs
+++ b/juno_scheduler/src/pm.rs
@@ -2160,6 +2160,7 @@ fn run_pass(
                 &doms[func.idx()],
                 nodes,
                 new_func_id,
+                false,
             );
             let Some(new_func) = new_func else {
                 return Err(SchedulerError::PassError {