<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/126197>126197</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[mlir] Crash when using --test-vector-unrolling-patterns
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
wangyongj1a
</td>
</tr>
</table>
<pre>
I have the following MLIR program:
test.mlir:
```
module {
func.func @func1() {
%cst_25 = arith.constant dense<3.718400e+04> : vector<4x2x2xf16>
%cst_26 = arith.constant dense<1.000000e+00> : vector<24x2x2xf32>
%47 = vector.fma %cst_26, %cst_26, %cst_26 : vector<24x2x2xf32>
%818 = scf.execute_region -> vector<24x2x2xf32> {
scf.yield %47 : vector<24x2x2xf32>
}
%823 = vector.extract_strided_slice %cst_25 {offsets = [2], sizes = [1], strides = [1]} : vector<4x2x2xf16> to vector<1x2x2xf16>
return
}
}
```
The above MLIR program will cause a crash when using the following command:
```
mlir-opt --test-vector-unrolling-patterns test.mlir
```
And the crash backtrace is:
```
mlir-opt: /data/tmp/v0207/llvm-project/mlir/lib/Dialect/Vector/IR/VectorOps.cpp:3536: mlir::Type inferStridedSliceOpResultType(mlir::VectorType, mlir::ArrayAttr, mlir::ArrayAttr, mlir::ArrayAttr): Assertion `offsets.size() == sizes.size() && offsets.size() == strides.size()' 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/tmp/v0207/llvm-project/build/bin/mlir-opt --test-vector-unrolling-patterns test.mlir
#0 0x0000562344a6b1df llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/tmp/v0207/llvm-project/build/bin/mlir-opt+0x170a1df)
#1 0x0000562344a68234 SignalHandler(int) Signals.cpp:0:0
#2 0x00007f4eee883420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#3 0x00007f4eee35000b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
#4 0x00007f4eee32f859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
#5 0x00007f4eee32f729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
#6 0x00007f4eee340fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#7 0x000056234719ac01 inferStridedSliceOpResultType(mlir::VectorType, mlir::ArrayAttr, mlir::ArrayAttr, mlir::ArrayAttr) VectorOps.cpp:0:0
#8 0x00005623471bed6d mlir::vector::ExtractStridedSliceOp::build(mlir::OpBuilder&, mlir::OperationState&, mlir::Value, llvm::ArrayRef<long>, llvm::ArrayRef<long>, llvm::ArrayRef<long>) (/data/tmp/v0207/llvm-project/build/bin/mlir-opt+0x3e5dd6d)
#9 0x00005623472bba44 (anonymous namespace)::UnrollElementwisePattern::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const (.part.0) VectorUnroll.cpp:0:0
#10 0x000056234b6d23d8 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/tmp/v0207/llvm-project/build/bin/mlir-opt+0x83713d8)
#11 0x0000562347bd4120 (anonymous namespace)::GreedyPatternRewriteDriver::processWorklist() GreedyPatternRewriteDriver.cpp:0:0
#12 0x0000562347bd723b mlir::applyPatternsGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) (/data/tmp/v0207/llvm-project/build/bin/mlir-opt+0x487623b)
#13 0x00005623483454f2 mlir::applyPatternsGreedily(mlir::Operation*, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) (.constprop.0) TestVectorTransforms.cpp:0:0
#14 0x00005623483509df (anonymous namespace)::TestVectorUnrollingPatterns::runOnOperation() TestVectorTransforms.cpp:0:0
#15 0x0000562347b1afb1 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/tmp/v0207/llvm-project/build/bin/mlir-opt+0x47b9fb1)
#16 0x0000562347b1b44a mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/tmp/v0207/llvm-project/build/bin/mlir-opt+0x47ba44a)
#17 0x0000562347b1b7ce mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::'lambda'(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&)::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const Pass.cpp:0:0
#18 0x0000562347b1a4b5 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) (/data/tmp/v0207/llvm-project/build/bin/mlir-opt+0x47b94b5)
#19 0x0000562347b1acdb mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/tmp/v0207/llvm-project/build/bin/mlir-opt+0x47b9cdb)
#20 0x0000562347b1b44a mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/tmp/v0207/llvm-project/build/bin/mlir-opt+0x47ba44a)
#21 0x0000562347b1bf84 mlir::PassManager::run(mlir::Operation*) (/data/tmp/v0207/llvm-project/build/bin/mlir-opt+0x47baf84)
#22 0x0000562347b0d09b performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#23 0x0000562347b0db02 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, llvm::ThreadPoolInterface*) MlirOptMain.cpp:0:0
#24 0x0000562347b0dd74 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&)::'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
#25 0x0000562347c1676e 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/tmp/v0207/llvm-project/build/bin/mlir-opt+0x48b576e)
#26 0x0000562347b04989 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/tmp/v0207/llvm-project/build/bin/mlir-opt+0x47a3989)
#27 0x0000562347b0dee1 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/tmp/v0207/llvm-project/build/bin/mlir-opt+0x47acee1)
#28 0x0000562347b0e3a6 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/tmp/v0207/llvm-project/build/bin/mlir-opt+0x47ad3a6)
#29 0x000056234497d01b main (/data/tmp/v0207/llvm-project/build/bin/mlir-opt+0x161c01b)
#30 0x00007f4eee331083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#31 0x0000562344a3baee _start (/data/tmp/v0207/llvm-project/build/bin/mlir-opt+0x16daaee)
Aborted (core dumped)
```
My git version is 4d3148d92681c154de51379a0cf393f9af8e1d75.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWltT4zgW_jXmRUVKlnx94MHcdqlqCgp6Zh9TsnWcaFqRvZIMZH79lmwHX0IamM72zE7t1DQQXT6dy3eOjqQwY8RKAZx54bkXXp6wxq4rffbM1GpbqdVvPjvJK749u0Fr9gTIrgGVlZTVs1ArdPvl5gHVulpptvFo5uHMgrGLjRS6--hFuP8fZ5uKNxKQF597OEOobFSxcD-QF2D32_dI4pH0dQBCHgkLY5ckRB69REwLu14UlTKWKYs4KAMevaCL2E8CjMEj5zjw6BXyaIaeoLCV9uhF8EJeyEvpRx69msFG34P1F7j9r4XFe7Ckx6VkghvELWY3bFFu2LCYRy4OfPgQcuInLbQpygW8QNFYWGpYiUqhUyfd2_N3xnSztgIkfxXynRUR8uLL0eqEjhWDF6tZYZfGasGBL40UBYzdFZ9XZWnAmnaWF54TL7x0ShvxO7w2-rvGFmbaHF8e9iOy1dDh7ztYg220aj90WvQ_R2T8ugbE8uoJJhxGz0JKVLDGAGKo0Mys0fMaFGqMo_uU_EW12TDF3yC6FPq0qi06PXXhcNqJetooXUkp1Oq0ZtaCVgYN0TJFyBRvF-skyFnxzdkbkDCHV3PW8sg1Z5Z55Npuao9cP2GCY49cS_m0Oa119RsU1iPX7YrkWorcI9eXgsmu-dfOpOT65uH1011tFkVdezSjIY3cGrvgptnXbQ1IqBL0Y8eDR0eDu_oBTCOt6_VIMgzvALvmixFMpjXbZtbqzzanTpzMGNDWhYEX4Z50C8eyXTahl23YON5N2l0QRug7MzpSjno8EqOSCQl84eHs_stV9niFTJNvhEUM5c0KaagrbR0919bWrbPItUeuV8Kum3xRVJveGfs-EcY0YDxyjZjiSKhCNhzeIoFb-9Gy4hvizabu-IAXXcze9zRmetVsQFnzCVLkjZDc_Raqp8jnOYw8QjHCLy5xhhGhQcCi3OclanVu_We2pvvjXgtlW0W-OrU8kgyDNHteVsZqYBuvS5ZC2c5ryQ-p45L5ix9j5vPSebQT2Z-JnBAaoEexUkz-kykuQXsk6SXomndBgdt_HQrpUeIyAIAkoQHBaLnUYGylYaltL30Xdi9JtIyCUylU83K6Uk3XUdu1BsYXplrgTtYgIHiQlE7WoCHGOEeaCQMfAC8cbNTCBhTjfIANprCkTMLUpccPyTyCJSQJ0wE2nMPGry78MGBMRoDRFDDAJY8-B0hpyaMBMB57PvZTVmD_T01paJ52xwxLptLmwCM-wtltie7vq26HnmrRdfWRMVLjrj53bY7m0VS0uxo0c9n10TILe92_Mtm0qg-h2yrzAKVHL2SlVm5T_uH-I8U9hZDziA_eTyf2JHnOgsAtxVSltpuqMUixDZi6TU9pJ98vbQa8kuDy67MwcN8lwq53w2yxzhR_gGctLMys3NvSI9nUjD1EP6nzQoraktSJs6iZti4f7NjRyTAjiMtjk9ybR5xQnuyvk9W1FAV75crxhB470pX0buJSt87Mq0qiCXQP0OnZ6bzHhhnIUyX4D4MMHV-qlSiY7IL7Y7hHomJCY5_ypKOi89xkC4pzHvgEv0fFf2gAvp364VKLJ-h1qHVVgDH_qvQ3KZwWbXlzeNYbhCIzsWJC8xEHWF3LHZRpgYXcTuz40B5R9hLHta5-h93qPcAj2JG5x6M7kfvRF5UqxcoNcJRqaXkkpwRJHBGaD06hY-0TGoRBST6l_eHo-S8YoDvD1rqqu1zxFYztNyjNlCkrvZlvKk7JYKpkiFNevse8AfqXXUG4s0NfwDXqTo20Tz4hUDjlnM_K3B_ZgoNlQu7s-7W6q--ZMRln9WtC042aBbMxex447JtMMbk1wtwyxVagB0tfoEa1tyX8qPVoEOdpmfsD76KZBfIgYJ-2wL2oQQo1T-du6Ktih3b7P26S6Q5hzI0yVrdnEXey3NtCxgO6lbuOXvZ7pkHZG1VWu8A4YrTHbrtng9XjudXjAj5t9RHrM7NVxc2mlh5JOmP10eORWLJNzplH4ol3jrfEXX1_68y227lcW9XOcm7oDrM_YeG-hnFgbwR6Mg_0IA-PbPDjBWiQhwNV0rnkBc__9imq4MPWSPD_U9TPT1HEn1u9TIKZsDv132TZ1HpHlLJMgkHKWdGIOU5zVIN2G37WVuLmndseY3l_W7RmGviytnpSuD9WjS7gdqU9enWgZLr9cvNwUSkLL3bPqbdS6Lva3jKhumJqXOajUe9-0iJ0rlyOCeor7fOmLNu7og_p1ijx7wb2dLuFTaW3O6jReA4la6RdcpBg4fAcetWfgD6m8HhcfxfsinZj9XbvTPe1vZ26ryp5oyzosq0Js_eNFsyNxuMAHTqH_ZGD288z6mHXtgfEtqdgUuas-LYslUcv3nTDX5Akbzv_g1HzZmXzl_EKSdq7pJ9q2O-I9E60TA9AhR_F0bgQNbUUNlP8fpZ0_gzV_gcj9Lsjxn2PVgu1eoDyYPPR7h3yMI5g2EBn5z8cpEn6diD-3dLIsSoSRtMkHQwaz_cfAP-gQfsisVizrhzMPkuL96xxPC0LgOHagMzOUxgoi46i5c9Sh1MWDepMDllBGnPs52jDhDrSK2DkF9gfjjSvD5f94xL1cULRcilFXiyNZdouR4t_9P0qwAkdlpg9NNKcAaAO_FhKccagTyVZXmkL7YV5UWlo34uhf_4Yf4PgdotWwqIn0EZUCgmDAk79IOEpiRK_8MOAQ-jTOGW4KGlKy5SVCfg8Dhcn_IzylKbsBM78mCapH5CInqzPOA5wSkpa5qWP4yiNaQg0TWhS0pIwxk7EGcEkdAriOAgIXWDgxA8DoGFBfc6xF2DYMCEXTvtFpVcn7RP5mU8iP41PJMtBmvZbS4R0X2ggXnh5os9aa-XNyngBlsJYMyBYYWX7Tad2QniJLuZf8Xjvufuk0fLsjz_u98I_nZH_BAAA__-ElIh8">