[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