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());