<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/108161>108161</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[mlir] -lower-host-to-llvm crashes
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
axeabc
</td>
</tr>
</table>
<pre>
git version: 761bf333e378b52614c
system: `Ubuntu 18.04.6 LTS`
reproduce with: `mlir-opt -lower-host-to-llvm a.mlir`
a.mlir:
```
func.func private @struct_missing_member_semantic(!spirv.struct<(!spirv.matrix<3 x vector<3xf32>> [0])>) -> ()
```
stack trace:
```
unhandled SPIR-V type
UNREACHABLE executed at /data/szy/MLIR/llvm-release/llvm-project/mlir/lib/Dialect/SPIRV/Utils/LayoutUtils.cpp:102!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt -lower-host-to-llvm a.mlir
#0 0x0000565425a4d128 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10d7128)
#1 0x0000565425a4ac3e llvm::sys::RunSignalHandlers() (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10d4c3e)
#2 0x0000565425a4dabd SignalHandler(int) Signals.cpp:0:0
#3 0x00007f949f882420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#4 0x00007f949eebf00b raise /build/glibc-LcI20x/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
#5 0x00007f949ee9e859 abort /build/glibc-LcI20x/glibc-2.31/stdlib/abort.c:81:7
#6 0x0000565425a6d18f (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10f718f)
#7 0x0000565427c9c153 (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x3326153)
#8 0x0000565427c9ba6a mlir::VulkanLayoutUtils::decorateType(mlir::spirv::StructType, unsigned long&, unsigned long&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x3325a6a)
#9 0x0000565427c9b963 mlir::VulkanLayoutUtils::decorateType(mlir::spirv::StructType) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x3325963)
#10 0x00005654284c2f2e std::_Function_handler<std::optional<llvm::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&), std::enable_if<std::is_invocable_v<mlir::populateSPIRVToLLVMTypeConversion(mlir::LLVMTypeConverter&, mlir::spirv::ClientAPI)::$_3, mlir::spirv::StructType, llvm::SmallVectorImpl<mlir::Type>&>, std::function<std::optional<llvm::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&)>>::type mlir::TypeConverter::wrapCallback<mlir::spirv::StructType, std::enable_if<std::is_invocable_v<mlir::populateSPIRVToLLVMTypeConversion(mlir::LLVMTypeConverter&, mlir::spirv::ClientAPI)::$_3, mlir::spirv::StructType>, std::function<std::optional<llvm::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&)>>::type mlir::TypeConverter::wrapCallback<mlir::spirv::StructType, mlir::populateSPIRVToLLVMTypeConversion(mlir::LLVMTypeConverter&, mlir::spirv::ClientAPI)::$_3>(mlir::populateSPIRVToLLVMTypeConversion(mlir::LLVMTypeConverter&, mlir::spirv::ClientAPI)::$_3&&) const::'lambda'(mlir::spirv::StructType, llvm::SmallVectorImpl<mlir::Type>&)>(mlir::populateSPIRVToLLVMTypeConversion(mlir::LLVMTypeConverter&, mlir::spirv::ClientAPI)::$_3&&) const::'lambda'(mlir::Type, llvm::SmallVectorImpl<mlir::Type>&)>::_M_invoke(std::_Any_data const&, mlir::Type&&, llvm::SmallVectorImpl<mlir::Type>&) SPIRVToLLVM.cpp:0:0
#11 0x0000565428b990f0 mlir::TypeConverter::convertType(mlir::Type, llvm::SmallVectorImpl<mlir::Type>&) const (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x42230f0)
#12 0x0000565428b9acf7 mlir::TypeConverter::convertType(mlir::Type) const (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4224cf7)
#13 0x0000565428362198 mlir::structFuncArgTypeConverter(mlir::LLVMTypeConverter const&, mlir::Type, llvm::SmallVectorImpl<mlir::Type>&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x39ec198)
#14 0x0000565428361e68 mlir::LLVMTypeConverter::convertFunctionSignatureImpl(mlir::FunctionType, bool, bool, mlir::TypeConverter::SignatureConversion&, llvm::SmallVectorImpl<std::optional<mlir::NamedAttribute>>*) const (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x39ebe68)
#15 0x0000565428362736 mlir::LLVMTypeConverter::convertFunctionSignature(mlir::FunctionOpInterface, bool, bool, mlir::TypeConverter::SignatureConversion&, llvm::SmallVectorImpl<std::optional<mlir::NamedAttribute>>&) const (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x39ec736)
#16 0x00005654282683d2 mlir::convertFuncOpToLLVMFuncOp(mlir::FunctionOpInterface, mlir::ConversionPatternRewriter&, mlir::LLVMTypeConverter const&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x38f23d2)
#17 0x000056542826f795 (anonymous namespace)::FuncOpConversion::matchAndRewrite(mlir::func::FuncOp, mlir::func::FuncOpAdaptor, mlir::ConversionPatternRewriter&) const FuncToLLVM.cpp:0:0
#18 0x000056542826f5f8 mlir::ConvertOpToLLVMPattern<mlir::func::FuncOp>::matchAndRewrite(mlir::Operation*, llvm::ArrayRef<mlir::Value>, mlir::ConversionPatternRewriter&) const (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x38f95f8)
#19 0x0000565428b9db11 mlir::ConversionPattern::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4227b11)
#20 0x000056542b528c91 void llvm::function_ref<void ()>::callback_fn<mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<llvm::LogicalResult (mlir::Pattern const&)>)::$_0>(long) PatternApplicator.cpp:0:0
#21 0x000056542b52594b mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<llvm::LogicalResult (mlir::Pattern const&)>) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x6baf94b)
#22 0x0000565428b9eb53 (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#23 0x0000565428b9dbb7 mlir::OperationConverter::convert(mlir::ConversionPatternRewriter&, mlir::Operation*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4227bb7)
#24 0x0000565428b9ed7f mlir::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4228d7f)
#25 0x0000565428ba696b mlir::applyPartialConversion(mlir::Operation*, mlir::ConversionTarget const&, mlir::FrozenRewritePatternSet const&, mlir::ConversionConfig) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x423096b)
#26 0x00005654284ab829 (anonymous namespace)::LowerHostCodeToLLVM::runOnOperation() ConvertLaunchFuncToLLVMCalls.cpp:0:0
#27 0x0000565428b3f2d6 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41c92d6)
#28 0x0000565428b3fc40 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41c9c40)
#29 0x0000565428b42282 mlir::PassManager::run(mlir::Operation*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41cc282)
#30 0x0000565428b3aab1 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#31 0x0000565428b3a70b llvm::LogicalResult llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::$_0>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) MlirOptMain.cpp:0:0
#32 0x0000565428be73a5 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x42713a5)
#33 0x0000565428b35b35 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41bfb35)
#34 0x0000565428b35ddf mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41bfddf)
#35 0x0000565428b3610e mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41c010e)
#36 0x0000565425a2dd67 main (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10b7d67)
#37 0x00007f949eea0083 __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:342:3
#38 0x0000565425a2d8ee _start (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10b78ee)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW1tz46gS_jXKCxWXBLo-5MHjiWtTlWxSyey8uhAgmzMS0gGUiffXnwLJtpAvucx45-yeUzXjWIDo_r5umm4JY6X4UjB25UWfvOjzBW71qpZX-IXhnFzkNV1fLbkGz0wqXgsPTUESB3mBEGIoSfMIxkFIPP-z50-7T7VWmlVmoBf7f-St0C0I0okfTmJw--XJi_3haMkaWdOWMPCd61V_V1VyeVk3GlyW9XcmL1e10pe6vizL5wrgiekeTdM3ov7S9Np_oLsuWkEm5gM0kj9jzYAX-krLluhFxZXiYrmoWJUzuVCswkJz4sHUg4FquHyedCM9NBs2VlhL_uKhGQIv4JkRXUtz8VIg6KFrD10DL_rke9FnD2amAWbg0raaObKh8mNtlcbkG9ASE7ZDdHBkK1ZY0JJR8PRw83j5Feh1w7quP35_vJ7Ofpt-ur0G7IWRVjMKsAYenFOssQfn6s-1B-d3tzePHpwbai8lKxlWbHPZyPpfjGgPzi25cF7y3IPzzxyXXbMR-tWD8z80L5UH57d4XbfaXk1I03hoGvjQg0Gn0cPt9fTpGqg2r7gGGOTtEkjW1FIDXYOV1o0ycOHcg_Ml16s2n5C66pXZ14kr1TIjFWBBARekbCkDesUAkVitQI7JN8vhpBP_ZFmlbdVsSfUnnp89yHopcQWwXLYVE1pZJ_wIS3nLS2r-ctFz9poTWy2AB5EP_Bff9_0ojkIY4ZAGMAUWN5p6yKyp7suD5EJbJF-se8B0N0ji74taaclw5cHYgzPAhTZuZz3up-Hx4Cf_JfBpEgwc2WAIRhgwQewQhsdWPPGlwOVv1nel6lbEmdQMCWKOmnBMNc4pcBTyYNoz1zVvnNm3_7cToX6ipMjCrEhTGEIfLBaSKV1LtpC6R9Stmpc0XsThZclF-3K5FG3X0eiVZJhOVD3xO43DEPqOvuFQDGN54fs5kJgrBgbglyXPyeUtuYH-y_YSTlBguLQoPDifTMzVWlHWmIXTCv7SNTxbbURrLu3UE-KhaRSYFbzTJHI1yVgaZQDntUX6Nk007diwd1khqRGS7ITErnliGqTFeVyjSIK0cKhOhrITkpEgQueQjRCMgwg5stOR7BzHGGw2NTT92pbfsBgE2K6ZMlJLrNkXE_dhuhtv96ju65PdvboRM9AKu99TUNZi2ceJ_bazrEaEjEGxAzsbw85i9PNhnw1OFu-saEKgE8fTkMACMqA07VRazFtBNK_FYtVHGjTbdtaN6cGlh2a7oHlbLznB5SNTban77GGHdmPT3finCpflV5uM3FSNmWs02iQixr7mtq1oJnBesgUvhvpwteDiuSa269mZqambtsSa2f3_S317-_XOTD6rxSZNHGrpdmsTX63XHbTarORM6OnDjc2apjYhCBfo6HjXud9NhPkcEFH09vmFdrGpY9dhkjngjttxaJu-S9zMcFmaXMeZ8yhD_zCb_8_Z75caxIBMf61LxP32RGqh9KYnKXGVU-zB5G174Aft-nfC_qMubLerOxsNvpktdreHTcV6YfbRXo0xkE5w3Ld_QDwYULqfeJtN1ik00jzL_MI_vc5Id7mXLvwASx38c-QVIYTIL3wnr4AjyJgUyY9APq_6ISkSR33kqI9iGGTp0Pnt6jTJ0VQuR-vk1Co66YIfs-o58sSMkSBLHULCESEBi4eE7MeLoU03WaStTnUrmcU0ZGozYsNEXtfl8O9Jz9lOOwxmr67mQ_vtTszvuGJ0qrXkeatZv0nC6VkdEWUsZ7HLezR2xATFH-f9IOf3zY3QTBb28cx_LfXnDWHG5RMUO9Q7hX0K4xRROGBjwPF900X_7vtbSN4N2BH3gLVmUjyy75If2nFPRZPzxIG0gIhCh5RkREqRZJGRjUUt1lXdKiBwxVRjcWY7Du6bgYfY1gprspoK2uN1WDNp8fBel4hx75TiRtfyPbxuXMlMcGrnTsdwoyLdE6I39u8lOd68B2WTrJzCf98wiW1dYELOcDFNpcTrR1Y4Mr7ist2UFu9l4Dx-k0WFG8eyUT5A8yA4pev7Odr1_MVwQwiTPAiGcKHzWCWPYEqyADzXnA5Muan9FtKa0_b271o2PkL6UmtRuE7VI5w2TckJti9yfi5ds-N6mn3BrT77CYbhqHfGV8H-0CRHquO3zTuoVPyuVuqeJWZgj9yDoQEGIxNHWZjvs_p_E_2Aic6xWuMcF1mYO6t1XKywvHuMfmpT2xrrli1xyf_cZERlf_lGy74WpPt3l7thh50R7YXXfFhubeUfzhMdXd-ekLiozmItG1tzpzaD4dhaNCnejnXbrZx3kQf3VQfg2TwyhDClSeFgdNP-HMdZPAwuuGnK9QOWmuPyyBOct7jcFyyXTB8pSuey_pNtjN-7wtPR0btJZ7Uo-PJsXCE_i93V6-bpIc7TTvap1Xtbf2fyt1rpWU1Zl7x1HbIV92LAnX3R23vSLW4FWe1SxhkuD71qNTq5aXKOCkiHZRtlGvNyY6gv9X3zgJXa5LEbRUZBUqk9Ux438lTgcq24usMCL5kcFnTbl2fne9seBiSD1CmnYDqmhIT-uyl54A0ruRhHVzN0i_RklPoQR-5WrNSNUFrasxem6tjbq4cDOsldR6_7A5ZM6BtR1Ju1dLboGZCMhM6DOThKxE3wgSPtN3wc9MO_IugHhMDUqTvd8yZpjjDOA9AwWdSympL9eL5_tmT70EGtsGR00WjpJChPdSsJu1tKD10fCXIG2KwWmr3oPbPflVzeN_oO8z4COtX5oPdgwEDBGF_i5-BY9vSRdGsLvxX83y3bg3_HqlquP7VF0a2E7XjKCtyWekFZyTQ7fk__nGaYDI6N8HphM-DpreY8O56ddn0y9siWXGm53vePUz5wpN74K5GcsMzrHjpKklmCcOS8Dyq5ngr6IGvClNqo-0v87m-4Kk6OcJ6masnF0mSqx5rPlHglAcKRE5NHRQeKchQdXg3_tLV8nl0vL3LkMhyOGaa0OMpwn6qQFe6Skul7Hec1es4Gm1Kn-kGj6gfFgc9-Cuxfgo_4gc8cfKMjg5DSOAEV5uI85wbzhMZOCb09N9gfjMS-nyKwWJQ8JwulsdSLXps3HZIkqt2c1ey-2k47jz0xiUJoPnfi0zH-lDHQCT4XAykbmGB7KP2CXiGaoQxfsKsggbEfBmGELlZXlDDfN86XZJRFMWQYZzlLsR9RyDDNLvgV9GHoZ0HgJ1GC4CSKMIZBnsAoSFEAsRf6rMK8nBg9J7VcXtjz31eBnwZxcFHinJXK_oYBQuuWEHrR5wt5ZXHl7VJ5oV9ypdVuBs11aX_3YG-IPh88qW0PkzN10cry6uNn1Hs1n6_gfwIAAP__zJlLJg">