From c0acc4222cfd3bd120e12da83321a4f1e880c2be Mon Sep 17 00:00:00 2001
From: Russel Arbore <russel.jma@gmail.com>
Date: Thu, 23 Jan 2025 09:51:12 -0600
Subject: [PATCH] Run CRC and SLF before the first SROA, so that read chains
 test doesn't break SROA

---
 juno_frontend/src/lib.rs | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/juno_frontend/src/lib.rs b/juno_frontend/src/lib.rs
index c06ebf34..d9a59a38 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 {
-- 
GitLab