diff --git a/juno_frontend/src/lib.rs b/juno_frontend/src/lib.rs
index c06ebf34e293afc10ff84e45fa422c3c2dabad5d..d9a59a38567f24dda3d94e2bcc742655615110fc 100644
--- a/juno_frontend/src/lib.rs
+++ b/juno_frontend/src/lib.rs
@@ -149,8 +149,13 @@ pub fn compile_ir(
         pm.add_pass(hercules_opt::pass::Pass::Verify);
     }
     add_verified_pass!(pm, verify, GVN);
+    add_pass!(pm, verify, DCE);
     add_verified_pass!(pm, verify, PhiElim);
     add_pass!(pm, verify, DCE);
+    add_pass!(pm, verify, CRC);
+    add_pass!(pm, verify, DCE);
+    add_pass!(pm, verify, SLF);
+    add_pass!(pm, verify, DCE);
     if x_dot {
         pm.add_pass(hercules_opt::pass::Pass::Xdot(true));
     }
@@ -167,7 +172,7 @@ pub fn compile_ir(
     // Run SROA pretty early (though after inlining which can make SROA more effective) so that
     // CCP, GVN, etc. can work on the result of SROA
     add_pass!(pm, verify, InterproceduralSROA);
-    //add_pass!(pm, verify, SROA);
+    add_pass!(pm, verify, SROA);
     // We run phi-elim again because SROA can introduce new phis that might be able to be
     // simplified
     add_verified_pass!(pm, verify, PhiElim);
@@ -205,7 +210,7 @@ pub fn compile_ir(
     add_pass!(pm, verify, DCE);
     add_pass!(pm, verify, Outline);
     add_pass!(pm, verify, InterproceduralSROA);
-    //add_pass!(pm, verify, SROA);
+    add_pass!(pm, verify, SROA);
     add_pass!(pm, verify, InferSchedules);
     add_verified_pass!(pm, verify, DCE);
     if x_dot {