<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/73383>73383</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[mlir] --inline crashed with assertion failure.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
anonymousMCS
</td>
</tr>
</table>
<pre>
git version: 024718313b526a4530d7cd58886fcc157247e0ff
system: Ubuntu 20.04.6 LTS (Focal Fossa)
reproduced with: ```mlir-opt --inline a.mlir```
a.mlir:
```
#map = affine_map<(d0)[s0] -> (-((d0 * 2) floordiv 16))>
func.func @func1(%arg0: i1, %arg1: index) {
%c0 = arith.constant 0 : index
%c1 = arith.constant 1 : index
%c8 = arith.constant 8 : index
%c23 = arith.constant 23 : index
%alloc_8 = memref.alloc() {alignment = 64 : i64} : memref<2xi64>
%22 = memref.rank %alloc_8 : memref<2xi64>
%44 = llvm.mlir.constant(0 : i64) : i64
%45 = builtin.unrealized_conversion_cast %44 : i64 to index
%54 = affine.max #map(%22)[%c23]
%alloc_46 = memref.alloc() {alignment = 64 : i64} : memref<1x1x1xi16>
%80 = bufferization.to_tensor %alloc_46 : memref<1x1x1xi16>
%81 = builtin.unrealized_conversion_cast %80 : tensor<1x1x1xi16> to !spirv.array<1 x i32>
%alloc_47 = memref.alloc() {alignment = 64 : i64} : memref<1x1x1xi16>
%alloc_48 = memref.alloc() {alignment = 64 : i64} : memref<1x1xi32>
%82 = builtin.unrealized_conversion_cast %c0 : index to i32
spirv.Branch ^bb1(%82, %81 : i32, !spirv.array<1 x i32>)
^bb1(%83: i32, %84: !spirv.array<1 x i32>): // 2 preds: ^bb0, ^bb5
%85 = builtin.unrealized_conversion_cast %83 : i32 to index
spirv.Branch ^bb3(%82, %84 : i32, !spirv.array<1 x i32>)
^bb3(%88: i32, %89: !spirv.array<1 x i32>): // 2 preds: ^bb2, ^bb4
%90 = builtin.unrealized_conversion_cast %88 : i32 to index
%94 = memref.load %alloc_48[%85, %90] : memref<1x1xi32>
%95 = arith.index_cast %94 : i32 to index
%subview = memref.subview %alloc_47[%85, %c8, %c0] [%c1, %c1, %c1] [%c1, %c1, %c1] : memref<1x1x1xi16> to memref<?x?x?xi16, strided<[?, ?, ?], offset: ?>>
%alloc_49 = memref.alloc() {alignment = 64 : i64} : memref<1x1x1xi16>
%subview_50 = memref.subview %alloc_49[%85, %95, %c0] [%95, %c1, %c1] [%c1, %54, %45] : memref<1x1x1xi16> to memref<?x?x?xi16, strided<[?, ?, ?], offset: ?>>
memref.copy %subview, %subview_50 : memref<?x?x?xi16, strided<[?, ?, ?], offset: ?>> to memref<?x?x?xi16, strided<[?, ?, ?], offset: ?>>
return
}
```
trace:
```
<unknown>:0: error: strides must not be zero
mlir-opt: /data/bin/llvm-project/mlir/include/mlir/IR/StorageUniquerSupport.h:180: static ConcreteT mlir::detail::StorageUserBase<ConcreteT, BaseT, StorageT, UniquerT, Traits>::get(mlir::MLIRContext*, Args&& ...) [with Args = {long int, llvm::ArrayRef<long int>}; ConcreteT = mlir::StridedLayoutAttr; BaseT = mlir::Attribute; StorageT = mlir::detail::StridedLayoutAttrStorage; UniquerT = mlir::detail::AttributeUniquer; Traits = {mlir::MemRefLayoutAttrInterface::Trait}]: Assertion `succeeded(ConcreteT::verify(getDefaultDiagnosticEmitFn(ctx), args...))' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /data/bin/llvm-project/build/bin/mlir-opt --inline a.mlir
#0 0x000055b03dcbd06f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/bin/llvm-project/build/bin/mlir-opt+0x160306f)
#1 0x000055b03dcba0c4 SignalHandler(int) Signals.cpp:0:0
#2 0x00007f31f4063420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#3 0x00007f31f3b4e00b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
#4 0x00007f31f3b2d859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
#5 0x00007f31f3b2d729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
#6 0x00007f31f3b3efd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#7 0x000055b040a1c2cb mlir::StridedLayoutAttr mlir::detail::StorageUserBase<mlir::StridedLayoutAttr, mlir::Attribute, mlir::detail::StridedLayoutAttrStorage, mlir::detail::AttributeUniquer, mlir::MemRefLayoutAttrInterface::Trait>::get<long, llvm::ArrayRef<long>>(mlir::MLIRContext*, long&&, llvm::ArrayRef<long>&&) (/data/bin/llvm-project/build/bin/mlir-opt+0x43622cb)
#8 0x000055b040a1c313 mlir::StridedLayoutAttr::get(mlir::MLIRContext*, long, llvm::ArrayRef<long>) (/data/bin/llvm-project/build/bin/mlir-opt+0x4362313)
#9 0x000055b03eef7954 mlir::memref::SubViewOp::inferResultType(mlir::MemRefType, llvm::ArrayRef<long>, llvm::ArrayRef<long>, llvm::ArrayRef<long>) (/data/bin/llvm-project/build/bin/mlir-opt+0x283d954)
#10 0x000055b03eef7cc9 mlir::memref::SubViewOp::inferResultType(mlir::MemRefType, llvm::ArrayRef<mlir::OpFoldResult>, llvm::ArrayRef<mlir::OpFoldResult>, llvm::ArrayRef<mlir::OpFoldResult>) (/data/bin/llvm-project/build/bin/mlir-opt+0x283dcc9)
#11 0x000055b03ef080f2 SubViewReturnTypeCanonicalizer::operator()(mlir::memref::SubViewOp, llvm::ArrayRef<mlir::OpFoldResult>, llvm::ArrayRef<mlir::OpFoldResult>, llvm::ArrayRef<mlir::OpFoldResult>) (/data/bin/llvm-project/build/bin/mlir-opt+0x284e0f2)
#12 0x000055b03ef087ca mlir::OpWithOffsetSizesAndStridesConstantArgumentFolder<mlir::memref::SubViewOp, SubViewReturnTypeCanonicalizer, SubViewCanonicalizer>::matchAndRewrite(mlir::memref::SubViewOp, mlir::PatternRewriter&) const (/data/bin/llvm-project/build/bin/mlir-opt+0x284e7ca)
#13 0x000055b0435d4c38 mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<mlir::LogicalResult (mlir::Pattern const&)>) (/data/bin/llvm-project/build/bin/mlir-opt+0x6f1ac38)
#14 0x000055b040967a8c (anonymous namespace)::GreedyPatternRewriteDriver::processWorklist() GreedyPatternRewriteDriver.cpp:0:0
#15 0x000055b04096befb mlir::applyPatternsAndFoldGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) (/data/bin/llvm-project/build/bin/mlir-opt+0x42b1efb)
#16 0x000055b0408d11ca (anonymous namespace)::Canonicalizer::runOnOperation() Canonicalizer.cpp:0:0
#17 0x000055b0408b211e mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/bin/llvm-project/build/bin/mlir-opt+0x41f811e)
#18 0x000055b0408b25fa mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/bin/llvm-project/build/bin/mlir-opt+0x41f85fa)
#19 0x000055b0408b36c3 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (mlir::OpPassManager&, mlir::Operation*)>::callback_fn<mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::'lambda'(mlir::OpPassManager&, mlir::Operation*)>(long, mlir::OpPassManager&, mlir::Operation*) Pass.cpp:0:0
#20 0x000055b0408e13b3 (anonymous namespace)::InlinerPass::optimizeCallable(mlir::CallGraphNode*, llvm::StringMap<mlir::OpPassManager, llvm::MallocAllocator>&) Inliner.cpp:0:0
#21 0x000055b0408ea2e6 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult ((anonymous namespace)::CallGraphSCC&)>::callback_fn<(anonymous namespace)::InlinerPass::runOnOperation()::'lambda'((anonymous namespace)::CallGraphSCC&)>(long, (anonymous namespace)::CallGraphSCC&) Inliner.cpp:0:0
#22 0x000055b0408eb0d3 (anonymous namespace)::InlinerPass::runOnOperation() Inliner.cpp:0:0
#23 0x000055b0408b211e mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/bin/llvm-project/build/bin/mlir-opt+0x41f811e)
#24 0x000055b0408b25fa mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/bin/llvm-project/build/bin/mlir-opt+0x41f85fa)
#25 0x000055b0408b2e24 mlir::PassManager::run(mlir::Operation*) (/data/bin/llvm-project/build/bin/mlir-opt+0x41f8e24)
#26 0x000055b0408a3b93 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#27 0x000055b0408a5064 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, llvm::ThreadPool*) MlirOptMain.cpp:0:0
#28 0x000055b0408a5214 mlir::LogicalResult llvm::function_ref<mlir::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&)::'lambda'(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) MlirOptMain.cpp:0:0
#29 0x000055b0409a4504 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) (/data/bin/llvm-project/build/bin/mlir-opt+0x42ea504)
#30 0x000055b04089da77 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/bin/llvm-project/build/bin/mlir-opt+0x41e3a77)
#31 0x000055b0408a5361 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/bin/llvm-project/build/bin/mlir-opt+0x41eb361)
#32 0x000055b0408a57c6 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/bin/llvm-project/build/bin/mlir-opt+0x41eb7c6)
#33 0x000055b03dbf45db main (/data/bin/llvm-project/build/bin/mlir-opt+0x153a5db)
#34 0x00007f31f3b2f083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#35 0x000055b03dc8d3ce _start (/data/bin/llvm-project/build/bin/mlir-opt+0x15d33ce)
Aborted (core dumped)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW11z4yjW_jXKDRUXAn1e5MJx4nm7qvMmlfTsXLoQQg7bMmgBpZP-9VuAbEuy4zjt9Ezv7M50J2o453DOw_lCxkRrvhSMXQTxZRBfnZHWPEp1QYQULyvZ6pvZw1khy5eLJTfgiSnNpQjwFEAUpWGGQ1zEKCFRjGGZ0jLOsiypKA3jFEUpg1UVwKsATv1P_aINW1nu34tWmBYgOIHRJAGfvzyAAGVzSUkN5lJrEqC8z6lYo2TZUlaCb9w8WhFBAv2fVc3VuWwMOD_nouaCATKxYxuCvqBuCnf_HNMgvCINCPAVIFXFBVusSBPgWYCyElqV4ksNg_gKnAf42mp8HqDMTYIATQEKUA6qWkpV8icQJpYD5QG-9tKrVtCJ_QGCCNrfoeOOiVpCaxEPAzQDfiB0A6Jkz1ZmkF56EcBOU-g1VNw8TqgU2hBhgB1cs_Row3204X7abB9ttp8W4X3EbnSXmtS1pAsvfsVWilUTN-Tsd-aRmi_FignjaJLIi0miIL1yj54rwDP0bEfXkDrpCPUFKyK-Dtc8zB1Fjruun1bONzbGBCiDGzWslt1jjzV2rEXLa8PFpBWKkZp_Z-WCStHFyoISbTbrOAnAyB2E4qjndZMVeQbeF72HIOSdzwMfxFc72EbJR4AbPtv_eZgMIcpgZ2dVMcW_E8OlmBi5MExoqUZKHCEufAds3R74pUYyLZABCnXD1dOEKEVeLAF4Bhyj4ZKdfulPBKlb4kOc3C0wtiFD74CN9tKB8zeM1qI8XJeKCPoIgvi6KLo8lKEu_2RdfsDdwOsIb7J0XwweMMdZ5NL1YSnY2TgP0Bwg0ChWasdkxUInxz7FfTTeE3sZXhu0E3u7aOAxGtEPobEWk43QyE9DA23Q6GeiHL4HjexVNKyoqO_BtSRl37t9EsrizprcVcO3fTePe9XCrbjRJo8OaaPb4omzb32VNkPbsB5pRbP1g1fPJ851de0_vD37WuRbZTcTAZ4_r__aaTQD2ihestJOxpcBnjup21_xlX2SVaWZcXuL5xaxfRkl_4lJq8NyEcPDCOfjfY_3ILwdPIhwHHUPUfyXItwZS2Xz0oOi020AzPSn6PGT7VPMtEp0CSm92t_vup9GEcpebYnxrBVfhfwmnPSp61SZUrYYTzsdNVi12gAhDSgY-M6U9LzrztxnvHlJDAnQvOAiQHPbb503Sv6TUROguevK0ZwLWrcl2w58ug_Q_MFIRZbsd8H_1TL10DaNVGZiTwFhBr0axHAKZlJQxQz7AtZNPp6WzBBe--e1HM3UJdEswLMNh8XSjrmHjs49d4u65y-KcKM9DgGeLpntEbdL3Xz-dD-TwrBnE6CpZZiqpQ5QEqAETCYTF7PxpT3AuBkXckF6WUuxBNw2nDPXhnppU1sZ7p1zbAjwtd1JfNmz1IXtRoUH7zOfyYtszdQYZYmdXSNCO8eL1jBLsLZ3RDOEbiS447Hsa4gOsG-W62gtm0dzDUIPRra6Z9V2pU_CMFV1Loqnjs3CEF_ZrZ9qzZRtSO2BULeUMmaDBmXbrXVsT0zx6iVA2ZKZK1aRtjZXnCyF1IbT6xU3cxGgjJpnd2ibAaKW2u-Z-5OCivCalRPv2Xefr6cP10C3xYobQEDRLoFi1i1tVD8a09iK7Uv4kpvHtphQuercftf7udYt07bcE1GCLgiAeWSAKqIfQUHoVxel3fIPhtCvoGxXzSZs4QS4_-6UXCqysvq3tjDoI4LPtg3lZvLV87TPKwHCEMBnCCGM4wLikhYlTKqe5-oX7R_uFBfG6frFpRiUbYkU-baQ2ihGVi5CZj4CcuCK2w-oG6BL-BwmEMOk2nRiVttwpC2BNAIPfClI_X9ElDVTAcq6xf2wntCm6XId3ApCnaC0wmEVwQRHCILFQjFtpGILZTrda14EaP6cJYskOq-5aJ_Pl6L1E415VIyUEy0n0GscRQgO9MX9ZXARMQgLoAjX7Aj51EpOnOQIQ1gMJEdDyajM4hyQQh6leU8yQlmcDyTHY8npZiePlpmiocxkKBOzqkzeJxPjqkwGMtOeL0SQhBTR4lD6PLqQHErBaLY38Q6Gj8q1r3LspNcB5VEJtV_UfMU5WI66VuNw-fNSki6-D8rqqE4M_wgnCNGh02fjLcchPlwxj6vtR0H0EQbhEA8Myvv5jLEqzeOoZ9C6pXTGtcU_OPt22_h_clExdc90W5svLw0bGuicxA-_ZdSp8yeCgjJc5vYUkW_e2oZwDAql-Z8Cypb4tpnLuvSSDsHwoRwfACWl-QDKQb1kFcxghUAH2r07VFhAZkRIwal7y9ApJxumiJHKH08HQO7H_--KacRghQaYojGmKSWgr8If3DzeurPcA__O9FSUPjHpWfc2etr1c1ZXC_jsCHDf2LQtxWgzu1KwIoY-TkV5z74pbthxG7oluSPGMCU6btXld_d2_XSAU0oGAON-lsdxGVGc7eoybZqaU-ejb1p467yZS9Hl-8OG9b2sagW1jAt_tC-krMFAdCfAY-Fx2XHVkZAnycuThWyZP8ul3W7v9MfJPTEqkiokFGeDTYsGpTlPUpJRu8rmw0cgyIrpxp0dcq_eb4qx8mW4BVeKP62TUKMkZVr_IdXXmlsD3Kuy17l2W32rWTzSrGBVv08kTVOvpdlYtUHpluD1ywDMe7Z0HpQMPWiu5He21qOT88BMD_M-tVe-o55JUXHXeFi_cr55ao-BipBVxWBnkoH9WRmGlLy1M3sqgmrFregFktuLAd1--IdtelagMGSvtL63zRd529wRraclaTaRrVox8mqtdwL59RCfClK_aK5viCBLnyo93DPQCveBefkh59UorLIwZAPss7HxcUXebfwdb5g9u49SmiXd2JR8OBrDLKn1J6GNcmXLdgU7abRP4Ff2E53ud0QxYT6JSq4D4wOcPayyuBrWjnwEOE5o_4QwzJWnJdf37EC-KcSU1HVB6NdFJQYL_Upx4OkDlNZkVZQkQOlphqNsfcD6QSHA0u5NLwgON5yFuMBvZbdP7lWYcvh13a7hK_6dzUhdk6IeRpod_E2R5vH_ZcnWB8aN59jWTixv3NWSV63rM9y4j2Gm9odvXq67bqrTar-Z4chMgljyoX79ZkHoQHiYzbaNxB6Pfi_0-8rKXv_7IQW3nvdu9sP7gUb7UcDy_W63t6QeXBb_FxdTFP2vmP6pxRTFY8AZikZ6ri3f61vjLH6yggwN3hShUWtLcJFj0DBVSbWausSn3_igQpvST-lHoli5aIw9j_fSu2wVZTdLm6dfael3Xyf25mqubhtzQ7jwzX7_KAZ6s_vDfdQ7kxgmEehORZfuBtex5rXuZfKOeTdsJdXLWlSPvvQfqy1KVjPDXufpXh0fa3Of7oqTmlFjj1XaqJedo_cX9-nK3fZk9CZc2RguFEYfWiT_PDhf39S3W8keTr-ge-zf9iNDZm9n8Mvsyrbb-CVUejtghqelnEQx7AeMbmpupqK8G2Wcv8K6_8AgPUix7RT875Nf_DASw0F1xKOjUV6SNN0faH-3NHFqp8EwSdMBluG4tOAkfBXLruWjj8Q3d3uPjPesOjB8GIjTDSxwEg4MRGMDU5p8iIE_3ZKUJgNL8OCOSFFFcVmAFeHixOsoMSZxOXi1unMJo4IZBotFzQu60IYos-ite-zliQhmeLBKPLz0kpWYMuDln2pSiTHdHrKmhVSGuc8mqFTMXUpi5VaX9W3Cs_IClznOyRm7CFMIc5ihFJ49XiQQ0zTK4ixKK1JihiJa5FGOEMSYlTE64xcIIhyGKA4hDkM4KaOyyCEtSEgqFlVhEEG2IryeuO9wSLU8c_epLlKMM3xWk4LV2n29CSF_qxAF8dWZunBGF-1SBxGsuTZ6K8BwU7uvRDmG-Gp7F8pdyOq-hgTI5vJZRXjdKjY5a1V98eP3v5zK_w4AAP__Lf0fVw">