Fix compatibility with LLVM 23 (#2951)
diff --git a/.github/workflows/enzyme-mlir.yml b/.github/workflows/enzyme-mlir.yml
index f60d694..4107fab 100644
--- a/.github/workflows/enzyme-mlir.yml
+++ b/.github/workflows/enzyme-mlir.yml
@@ -45,7 +45,7 @@
     - uses: actions/checkout@v4
       with:
         repository: 'llvm/llvm-project'
-        ref: '615644763ffcfc939bda59e9f3e71d6e7d9fd264'
+        ref: 'fb423ba07c3ff51fda3caa41d8bbb78d50f61906'
         path: 'llvm-project'
 
     - name: Set BASE_DIR
diff --git a/enzyme/Enzyme/Enzyme.cpp b/enzyme/Enzyme/Enzyme.cpp
index 29e9500..1d17c39 100644
--- a/enzyme/Enzyme/Enzyme.cpp
+++ b/enzyme/Enzyme/Enzyme.cpp
@@ -3135,7 +3135,7 @@
 
 static InlineParams getInlineParamsFromOptLevel(OptimizationLevel Level) {
 #if LLVM_VERSION_MAJOR >= 23
-  return getInlineParams(Level.getSpeedupLevel());
+  return getInlineParamsFromOptLevel(static_cast<unsigned>(Level));
 #else
   return getInlineParams(Level.getSpeedupLevel(), Level.getSizeLevel());
 #endif
@@ -3271,7 +3271,12 @@
     // system libraries and other oracles.
     MPM.addPass(InferFunctionAttrsPass());
 
-    if (Level.getSpeedupLevel() > 1) {
+#if LLVM_VERSION_MAJOR >= 23
+    if (Level > OptimizationLevel::O1)
+#else
+    if (Level.getSpeedupLevel() > 1)
+#endif
+    {
       MPM.addPass(createModuleToFunctionPassAdaptor(CallSiteSplittingPass(),
                                                     EagerlyInvalidateAnalyses));
 
@@ -3345,7 +3350,11 @@
     // have to resolve varargs calls, etc, so let instcombine do this.
     FunctionPassManager PeepholeFPM;
     PeepholeFPM.addPass(InstCombinePass());
+#if LLVM_VERSION_MAJOR >= 23
+    if (Level > OptimizationLevel::O1)
+#else
     if (Level.getSpeedupLevel() > 1)
+#endif
       PeepholeFPM.addPass(AggressiveInstCombinePass());
 
     MPM.addPass(createModuleToFunctionPassAdaptor(std::move(PeepholeFPM),
@@ -3483,7 +3492,11 @@
     MainFPM.addPass(MergedLoadStoreMotionPass());
 
     LoopPassManager LPM;
+#if LLVM_VERSION_MAJOR >= 23
+    if (EnableLoopFlatten && Level > OptimizationLevel::O1)
+#else
     if (EnableLoopFlatten && Level.getSpeedupLevel() > 1)
+#endif
       LPM.addPass(LoopFlattenPass());
     LPM.addPass(IndVarSimplifyPass());
     LPM.addPass(LoopDeletionPass());