[Mlir-commits] [mlir] 2db2628 - [MLIR] Fix mlirExecutionEngineLookup throwing assert on lookup fail (#123924)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Sat Feb 15 03:21:24 PST 2025


Author: Edgar
Date: 2025-02-15T12:21:20+01:00
New Revision: 2db262886f0c06c079e1b2808c4c14c16f8861b5

URL: https://github.com/llvm/llvm-project/commit/2db262886f0c06c079e1b2808c4c14c16f8861b5
DIFF: https://github.com/llvm/llvm-project/commit/2db262886f0c06c079e1b2808c4c14c16f8861b5.diff

LOG: [MLIR] Fix mlirExecutionEngineLookup throwing assert on lookup fail (#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.

Added: 
    

Modified: 
    mlir/lib/CAPI/ExecutionEngine/ExecutionEngine.cpp

Removed: 
    


################################################################################
diff  --git a/mlir/lib/CAPI/ExecutionEngine/ExecutionEngine.cpp b/mlir/lib/CAPI/ExecutionEngine/ExecutionEngine.cpp
index 507be9171d328..306cebd236be9 100644
--- a/mlir/lib/CAPI/ExecutionEngine/ExecutionEngine.cpp
+++ b/mlir/lib/CAPI/ExecutionEngine/ExecutionEngine.cpp
@@ -85,18 +85,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)->lookupPacked(unwrap(name)));
+  if (!optionalFPtr)
     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)
     return nullptr;
-  return reinterpret_cast<void *>(*expectedFPtr);
+  return *optionalFPtr;
 }
 
 extern "C" void mlirExecutionEngineRegisterSymbol(MlirExecutionEngine jit,


        


More information about the Mlir-commits mailing list