diff --git a/enzyme/CMakeLists.txt b/enzyme/CMakeLists.txt index 2ab67dd3d2fb..4ccbdce03ee8 100644 --- a/enzyme/CMakeLists.txt +++ b/enzyme/CMakeLists.txt @@ -17,7 +17,7 @@ add_definitions(-DENZYME_VERSION_PATCH=${ENZYME_PATCH_VERSION}) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON) -SET(CMAKE_CXX_FLAGS "-Wall -fno-rtti ${CMAKE_CXX_FLAGS} -Werror=unused-variable -Werror=dangling-else -Werror=unused-but-set-variable -Werror=return-type -Werror=nonnull") +SET(CMAKE_CXX_FLAGS "-Wall -fno-rtti ${CMAKE_CXX_FLAGS} -Werror=unused-variable -Werror=dangling-else -Werror=unused-but-set-variable -Werror=return-type -Werror=nonnull -Werror=unused-result -Werror=reorder") SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -ggdb") SET(CMAKE_CXX_FLAGS_RELEASE "-O2") diff --git a/enzyme/Enzyme/MLIR/Implementations/LinalgAutoDiffOpInterfaceImpl.cpp b/enzyme/Enzyme/MLIR/Implementations/LinalgAutoDiffOpInterfaceImpl.cpp index 4fffa1557433..3a72c3a5d359 100644 --- a/enzyme/Enzyme/MLIR/Implementations/LinalgAutoDiffOpInterfaceImpl.cpp +++ b/enzyme/Enzyme/MLIR/Implementations/LinalgAutoDiffOpInterfaceImpl.cpp @@ -197,8 +197,11 @@ struct GenericOpInterfaceReverse return std::make_pair(pushCache, popCache); }; - gutils->Logic.differentiate(gutils, *linalgOp.getBlock()->getParent(), - adjoint.getRegion(), buildFuncReturnOp, hook); + auto sub = gutils->Logic.differentiate( + gutils, *linalgOp.getBlock()->getParent(), adjoint.getRegion(), + buildFuncReturnOp, hook); + if (!sub.succeeded()) + return sub; auto newOpYield = cast( cast(newOp).getBodyRegion().front().getTerminator()); diff --git a/enzyme/Enzyme/MLIR/Implementations/SCFAutoDiffOpInterfaceImpl.cpp b/enzyme/Enzyme/MLIR/Implementations/SCFAutoDiffOpInterfaceImpl.cpp index e22cb9daef35..cbecedc21827 100644 --- a/enzyme/Enzyme/MLIR/Implementations/SCFAutoDiffOpInterfaceImpl.cpp +++ b/enzyme/Enzyme/MLIR/Implementations/SCFAutoDiffOpInterfaceImpl.cpp @@ -143,7 +143,9 @@ struct ForOpInterfaceReverse gutils->mapReverseModeBlocks.map(&oBB, &revBB); } for (auto &&[oBB, revBB] : llvm::zip(oldReg, newReg)) { - gutils->Logic.visitChildren(&oBB, &revBB, gutils); + auto sub = gutils->Logic.visitChildren(&oBB, &revBB, gutils); + if (!sub.succeeded()) + return sub; Block *newBB = gutils->getNewFromOriginal(&oBB); gutils->Logic.handlePredecessors(&oBB, newBB, &revBB, gutils, buildFuncReturnOp); diff --git a/enzyme/Enzyme/MLIR/Interfaces/GradientUtils.h b/enzyme/Enzyme/MLIR/Interfaces/GradientUtils.h index 32a7fe068d07..f6f1861039eb 100644 --- a/enzyme/Enzyme/MLIR/Interfaces/GradientUtils.h +++ b/enzyme/Enzyme/MLIR/Interfaces/GradientUtils.h @@ -38,8 +38,8 @@ class MGradientUtils { bool omp; unsigned width; - SmallVector RetDiffeTypes; ArrayRef ArgDiffeTypes; + SmallVector RetDiffeTypes; mlir::Value getNewFromOriginal(const mlir::Value originst) const; mlir::Block *getNewFromOriginal(mlir::Block *originst) const;