From fb27d542b71920f821f9357a8ec7705a30d7b274 Mon Sep 17 00:00:00 2001 From: Cullen Rhodes Date: Mon, 3 Jul 2023 14:33:13 +0000 Subject: [PATCH] [mlir-cpu-runner] Check entry function is void Currently crashes if function isn't void when specifiying '-entry-point-result=void'. Reviewed By: jpienaar Differential Revision: https://reviews.llvm.org/D154352 --- mlir/lib/ExecutionEngine/JitRunner.cpp | 6 ++++++ mlir/test/mlir-cpu-runner/verify-entry-point-result.mlir | 7 +++++++ 2 files changed, 13 insertions(+) create mode 100644 mlir/test/mlir-cpu-runner/verify-entry-point-result.mlir diff --git a/mlir/lib/ExecutionEngine/JitRunner.cpp b/mlir/lib/ExecutionEngine/JitRunner.cpp index 7a02ecb..4fbd124 100644 --- a/mlir/lib/ExecutionEngine/JitRunner.cpp +++ b/mlir/lib/ExecutionEngine/JitRunner.cpp @@ -224,6 +224,12 @@ static Error compileAndExecuteVoidFunction( SymbolTable::lookupSymbolIn(module, entryPoint)); if (!mainFunction || mainFunction.empty()) return makeStringError("entry point not found"); + + auto resultType = dyn_cast( + mainFunction.getFunctionType().getReturnType()); + if (!resultType) + return makeStringError("expected void function"); + void *empty = nullptr; return compileAndExecute(options, module, entryPoint, std::move(config), &empty, std::move(tm)); diff --git a/mlir/test/mlir-cpu-runner/verify-entry-point-result.mlir b/mlir/test/mlir-cpu-runner/verify-entry-point-result.mlir new file mode 100644 index 0000000..02db28a --- /dev/null +++ b/mlir/test/mlir-cpu-runner/verify-entry-point-result.mlir @@ -0,0 +1,7 @@ +// RUN: not mlir-cpu-runner %s -e entry -entry-point-result=void 2>&1 | FileCheck %s + +// CHECK: Error: expected void function +llvm.func @entry() -> (i32) { + %0 = llvm.mlir.constant(0 : index) : i32 + llvm.return %0 : i32 +} -- 2.7.4