Skip to content

Commit

Permalink
[MLIR] Fix mlirExecutionEngineLookup throwing assert on lookup fail (…
Browse files Browse the repository at this point in the history
…#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.
  • Loading branch information
edg-l authored Feb 15, 2025
1 parent 70b95ca commit 2db2628
Showing 1 changed file with 8 additions and 6 deletions.
14 changes: 8 additions & 6 deletions mlir/lib/CAPI/ExecutionEngine/ExecutionEngine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down

0 comments on commit 2db2628

Please sign in to comment.