[Mlir-commits] [mlir] [MLIR] Fix mlirExecutionEngineLookup throwing assert on lookup fail (PR #123924)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Wed Jan 22 02:35:15 PST 2025
https://github.com/edg-l created https://github.com/llvm/llvm-project/pull/123924
Apparently trying to lookup a function pointer using the C api `mlirExecutionEngineLookup` will throw an assert instead of just returning a nullptr on builds with asserts.
The docs itself says it returns a nullptr when no function is found so it should be sensible to not throw an assert in this case.
>From 06f79552000c4660da31afc49c7e849a2021063d Mon Sep 17 00:00:00 2001
From: Edgar Luque <git at edgarluque.com>
Date: Wed, 22 Jan 2025 11:33:29 +0100
Subject: [PATCH] [MLIR] Fix mlirExecutionEngineLookup throwing assert on
lookup fail on debug
---
mlir/lib/CAPI/ExecutionEngine/ExecutionEngine.cpp | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/mlir/lib/CAPI/ExecutionEngine/ExecutionEngine.cpp b/mlir/lib/CAPI/ExecutionEngine/ExecutionEngine.cpp
index 507be9171d328d..8480a5409a8159 100644
--- a/mlir/lib/CAPI/ExecutionEngine/ExecutionEngine.cpp
+++ b/mlir/lib/CAPI/ExecutionEngine/ExecutionEngine.cpp
@@ -15,6 +15,7 @@
#include "mlir/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.h"
#include "mlir/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.h"
#include "llvm/ExecutionEngine/Orc/Mangling.h"
+#include "llvm/Support/Error.h"
#include "llvm/Support/TargetSelect.h"
using namespace mlir;
@@ -85,18 +86,20 @@ mlirExecutionEngineInvokePacked(MlirExecutionEngine jit, MlirStringRef name,
extern "C" void *mlirExecutionEngineLookupPacked(MlirExecutionEngine jit,
MlirStringRef name) {
- auto expectedFPtr = unwrap(jit)->lookupPacked(unwrap(name));
- if (!expectedFPtr)
+ auto optionalFPtr =
+ llvm::expectedToOptional(unwrap(jit)->lookup(unwrap(name)));
+ if (!optionalFPtr.has_value())
return nullptr;
- return reinterpret_cast<void *>(*expectedFPtr);
+ return reinterpret_cast<void *>(*optionalFPtr);
}
extern "C" void *mlirExecutionEngineLookup(MlirExecutionEngine jit,
MlirStringRef name) {
- auto expectedFPtr = unwrap(jit)->lookup(unwrap(name));
- if (!expectedFPtr)
+ auto optionalFPtr =
+ llvm::expectedToOptional(unwrap(jit)->lookup(unwrap(name)));
+ if (!optionalFPtr.has_value())
return nullptr;
- return reinterpret_cast<void *>(*expectedFPtr);
+ return reinterpret_cast<void *>(*optionalFPtr);
}
extern "C" void mlirExecutionEngineRegisterSymbol(MlirExecutionEngine jit,
More information about the Mlir-commits
mailing list