Skip to content

Commit 2db2628

Browse files
authored
[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.
1 parent 70b95ca commit 2db2628

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

mlir/lib/CAPI/ExecutionEngine/ExecutionEngine.cpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,18 +85,20 @@ mlirExecutionEngineInvokePacked(MlirExecutionEngine jit, MlirStringRef name,
8585

8686
extern "C" void *mlirExecutionEngineLookupPacked(MlirExecutionEngine jit,
8787
MlirStringRef name) {
88-
auto expectedFPtr = unwrap(jit)->lookupPacked(unwrap(name));
89-
if (!expectedFPtr)
88+
auto optionalFPtr =
89+
llvm::expectedToOptional(unwrap(jit)->lookupPacked(unwrap(name)));
90+
if (!optionalFPtr)
9091
return nullptr;
91-
return reinterpret_cast<void *>(*expectedFPtr);
92+
return reinterpret_cast<void *>(*optionalFPtr);
9293
}
9394

9495
extern "C" void *mlirExecutionEngineLookup(MlirExecutionEngine jit,
9596
MlirStringRef name) {
96-
auto expectedFPtr = unwrap(jit)->lookup(unwrap(name));
97-
if (!expectedFPtr)
97+
auto optionalFPtr =
98+
llvm::expectedToOptional(unwrap(jit)->lookup(unwrap(name)));
99+
if (!optionalFPtr)
98100
return nullptr;
99-
return reinterpret_cast<void *>(*expectedFPtr);
101+
return *optionalFPtr;
100102
}
101103

102104
extern "C" void mlirExecutionEngineRegisterSymbol(MlirExecutionEngine jit,

0 commit comments

Comments
 (0)