[Mlir-commits] [mlir] 967c7b6 - [mlir] check for failures when packing function sigunatures in std->llvm conversion
Alex Zinenko
llvmlistbot at llvm.org
Tue Sep 15 03:30:51 PDT 2020
Author: Alex Zinenko
Date: 2020-09-15T12:30:44+02:00
New Revision: 967c7b6936a66878919568b94643c942cc7de69e
URL: https://github.com/llvm/llvm-project/commit/967c7b6936a66878919568b94643c942cc7de69e
DIFF: https://github.com/llvm/llvm-project/commit/967c7b6936a66878919568b94643c942cc7de69e.diff
LOG: [mlir] check for failures when packing function sigunatures in std->llvm conversion
When packing function results into a structure during the standard-to-llvm
dialect conversion, do not assume the conversion was successful and propagate
nullptr as error state.
Fixes PR45184.
Reviewed By: nicolasvasilache
Differential Revision: https://reviews.llvm.org/D87605
Added:
Modified:
mlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp
mlir/test/Conversion/StandardToLLVM/invalid.mlir
Removed:
################################################################################
diff --git a/mlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp b/mlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp
index 62b787153d84..814a2550015d 100644
--- a/mlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp
+++ b/mlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp
@@ -3390,7 +3390,7 @@ Type LLVMTypeConverter::packFunctionResults(ArrayRef<Type> types) {
SmallVector<LLVM::LLVMType, 8> resultTypes;
resultTypes.reserve(types.size());
for (auto t : types) {
- auto converted = convertType(t).dyn_cast<LLVM::LLVMType>();
+ auto converted = convertType(t).dyn_cast_or_null<LLVM::LLVMType>();
if (!converted)
return {};
resultTypes.push_back(converted);
diff --git a/mlir/test/Conversion/StandardToLLVM/invalid.mlir b/mlir/test/Conversion/StandardToLLVM/invalid.mlir
index 5f79cef68ba8..40acf4bc9d49 100644
--- a/mlir/test/Conversion/StandardToLLVM/invalid.mlir
+++ b/mlir/test/Conversion/StandardToLLVM/invalid.mlir
@@ -34,3 +34,7 @@ func @mlir_cast_to_llvm_vec(%0 : vector<1x1xf32>) -> !llvm.vec<1 x float> {
// Should not crash on unsupported types in function signatures.
func @unsupported_signature() -> tensor<10 x i32>
+
+// -----
+
+func @partially_supported_signature() -> (vector<10 x i32>, tensor<10 x i32>)
More information about the Mlir-commits
mailing list