<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/126196>126196</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[mlir] Crash when using --canonicalize
</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_5 = arith.constant 0x4DD16869 : f32
%58 = vector.broadcast %cst_5 : f32 to vector<22x22xf32>
%59 = vector.fma %58, %58, %58 : vector<22x22xf32>
%90 = vector.extract_strided_slice %59 {offsets = [16], sizes = [1], strides = [1]} : vector<22x22xf32> to vector<1x22xf32>
%171 = vector.transpose %90, [1, 0] : vector<1x22xf32> to vector<22x1xf32>
return
}
}
```
The above MLIR program will cause a crash when using the following command:
```
mlir-opt --canonicalize test.mlir
```
And the crash backtrace is:
```
mlir-opt: /data/tmp/v0207/llvm-project/llvm/include/llvm/ADT/SmallVector.h:291: T& llvm::SmallVectorTemplateCommon<T, <template-parameter-1-2> >::operator[](llvm::SmallVectorTemplateCommon<T, <template-parameter-1-2> >::size_type) [with T = long int; <template-parameter-1-2> = void; llvm::SmallVectorTemplateCommon<T, <template-parameter-1-2> >::reference = long int&; llvm::SmallVectorTemplateCommon<T, <template-parameter-1-2> >::size_type = long unsigned int]: Assertion `idx < 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 --canonicalize test.mlir
#0 0x000055dcb5f1d1df llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/tmp/v0207/llvm-project/build/bin/mlir-opt+0x170a1df)
#1 0x000055dcb5f1a234 SignalHandler(int) Signals.cpp:0:0
#2 0x00007fd1afb51420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#3 0x00007fd1af61e00b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
#4 0x00007fd1af5fd859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
#5 0x00007fd1af5fd729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
#6 0x00007fd1af60efd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#7 0x000055dcb86e039e (anonymous namespace)::ContiguousExtractStridedSliceToExtract::matchAndRewrite(mlir::vector::ExtractStridedSliceOp, mlir::PatternRewriter&) const VectorOps.cpp:0:0
#8 0x000055dcb86516cf mlir::detail::OpOrInterfaceRewritePatternBase<mlir::vector::ExtractStridedSliceOp>::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const (/data/tmp/v0207/llvm-project/build/bin/mlir-opt+0x3e3e6cf)
#9 0x000055dcbcb843d8 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)
#10 0x000055dcb9086120 (anonymous namespace)::GreedyPatternRewriteDriver::processWorklist() GreedyPatternRewriteDriver.cpp:0:0
#11 0x000055dcb908923b mlir::applyPatternsGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) (/data/tmp/v0207/llvm-project/build/bin/mlir-opt+0x487623b)
#12 0x000055dcb8ff4a12 (anonymous namespace)::Canonicalizer::runOnOperation() Canonicalizer.cpp:0:0
#13 0x000055dcb8fccfb1 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/tmp/v0207/llvm-project/build/bin/mlir-opt+0x47b9fb1)
#14 0x000055dcb8fcd44a 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)
#15 0x000055dcb8fcdf84 mlir::PassManager::run(mlir::Operation*) (/data/tmp/v0207/llvm-project/build/bin/mlir-opt+0x47baf84)
#16 0x000055dcb8fbf09b performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#17 0x000055dcb8fbfb02 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
#18 0x000055dcb8fbfd74 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
#19 0x000055dcb90c876e 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)
#20 0x000055dcb8fb6989 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)
#21 0x000055dcb8fbfee1 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/tmp/v0207/llvm-project/build/bin/mlir-opt+0x47acee1)
#22 0x000055dcb8fc03a6 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/tmp/v0207/llvm-project/build/bin/mlir-opt+0x47ad3a6)
#23 0x000055dcb5e2f01b main (/data/tmp/v0207/llvm-project/build/bin/mlir-opt+0x161c01b)
#24 0x00007fd1af5ff083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#25 0x000055dcb5eedaee _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/eJzcWVtT4zgW_jXiRUVKlu8PPISk2e2qpqCA2n1MydZxohlZ8koyl_n1W5INsdOhoWeys7Pb1UBiH33n9p2jI5tZK7YK4AKllyhdn7He7bS5eGJq-6LV9peInVWav1x8xTv2CNjtADdaSv0k1BZff_t6hzujt4a1KF4isnRg3aKVwgxfUUbG_2TZat5LwCi_RGSJcdOreuF_YZQQ_zdCtEC0fBPAGNG0tm6TYhSvMTPC7Ra1VtYx5TB5TtbrKCuyEqN4iZuY7helRVjxCLXTZlEZzXjNrJvihRXY6VEIxStKnyl99jjxlwlUOYVqWjbgI7o6-BAwPwAryRQMnp1htdtYZwQHvrFS1PCqM7_UTWPB2bACpZdRhtK112bFb7C_-noxYMwv5-v3bZp5Hh2zNcqjqbHOMGU7bWHwI7jt9dAVJig90BS9o4jS52iuyIDrjQpfUL72hBl-T2jzsAPMKv0IM7bhJyElrllvATNcG2Z3-GkHCvfWE3NO01q3LVP8CCWlMOe6c_j8vGZKK1EzKX4DvGfxXH6peIAe9FWs_tWnELCw72P7yCB6xZljiF65tkP06pFQkiN6JeVje94Z_QvUbvyK6JVQtew57C8s1w-IXt23TMp_DOnYoXhJy8hjPyCa4SAYL1G8nEg9QNtJ5mCl21YrFK8eQtrilRtvnHfMsBYcmPPoPGTLZybA6A4M81kLXQHR4uQaPI837qWDUPPp5ZNwO_wQOCe12mKhHIovPwJb40ctuBc8uYEGGjCgfE1ObaLZf0TbWzj22noVWjMPatO1T_bSWjBOaIVRRgR_9uChIwy9E9EcN0xI4AtElrffvizvv2DbV61wmOGq32IDnTbOV-XOuS7Qll4herUVbtdXi1q3e9odsFNY24NF9Aoz5W0KJD1WDl73vWP1r5j3bTdUBlng8O92LF9mtn0LytmfKI-qF5L7v0IhevWZ2sWIxgSTZ0IISVNeV2kT8Yg3k_TZFzt8uDVCuWD2g3diRnnDnjbaOgOs9fmnq4EJJQ5h_wPGI3pJnqOcsIg3Pn-DydGByYzGCb4XW8Xk35niEgyixWjBcNku6s5HmoSfAYWOKHnDI9ZUaZRQgjcbA9ZpAxvjRuulqBC9ei6yTZacS6H65_Ot6ocbndsZYHxh9YIMtiYJJXtL45mOLAJCKmyYCPvER-C1h80CbBITUu1hkxls2vAiLf0m8CmbJ7CUFmm5h00PYfO3FH4aMKcTwGzuPoGGZz8HGMcNz_aA-TTzRQYkLkMkPcFfWt1brFgLtgsELQdyrrRyYtvr3n4ZJor7YaC49_PEgx4vDrItc_VuqfgdPBnhPMlfZ7V4-bpN-89HkG46z_u9-C1zDowakUyoixKH-QwP7fCmO0bLYu5iGmV1M4Hl4JiQw-eb7sZ8VQ5Mw2oYFY1qL5kFFK9-xvrXTvujGNyEbU9ohejy8-6epAvEEENWT7pAOQ1UXRVJzIvvDVp2nRQ1e_P9dN6tJl3Sz-d-4cZAg-JVpbXEM-gRYAjIEBwf8B-B-I37D4Psb3zTW78F3IHtpfsc7on6dxHnUcyLIXO-fc-2nJIUWUTJR1X8NwPAX-Z5WBvxCKMPndE1WPtPbX6VwnsRzkrvrzqoPG9WdGBWSeNqwgHWdfIVygZgIV9mcbyDbSBPNifPldG_gZrX5z24Sbin0oPJo_RKq0ZsvYCnVKDliZKSFHlG42qfFDrrO02TsIh-2Fong8VovunVjZoUUkjDTO5I5OO57rpuqujdnvegb7pbZu2Ss-6trE2vDiht7XdV_H59LxWTL1bYa6bY1tf3a8BX8ynzZNHPq7Kpon30k4MI8CRhPx2BW9GBFOqwqXnRN8eyk4dk3iet_aqsM2F41eZII50KDJqHG6Ptt8yAcl9Vo1_r44SczyuWJGwf9fQw6k2RHBj76v5Rls2jd0IrmyLZW5nNrawaUla4A9No0y5Ds7cfTOPW8XGa3zEDfNM5M9sb7nVvarjeGn_kOt6Wrr99vfOTFDy775J6LYW56dw1E2poWNOdBE_uHin9_NC5ilA8NvPLvmnCLP8p33ol_tXDd75dQ6vNyyvURJ5Dw3rpNhwkOHh_jZ-Lvnze4ancWjAJtfP7gnXm5bux4SGcHm61lm9j3MikHwetOAwazxP83lb_e2aDPy-o76e2fJtIayalPz1vGjWbaSdB-guS5HjyP1k1gwiiuWRtxRmi-V8pK7SQWm3_3MD-wKQPqqWcz3V1kWcwyYPtpHBLxW8Pms5_w7X_wQr9ocT0nj9uqu0dNO9ePtloW6V5Bm8bKCUH7TIri_J4If6_tZFTTSQsLotyH9DocP8BiN4N6Dgk1js2jIPLn6XFR9E4nZc1wH4mpwcnoprELDuJl3-WOzxm2d6d2SErBdqQqMItE-pET2mzqCbR_kBJDx9SNqSI8WYjRVVvrGPGbSbKP_t8MSFFvFeRzl0CzgDwAH4qpzhjMLaSZaWNg_BMptYGwtN74KM1kzdb1y94Kxx-BGOFVlhYnPA4Sgpe0qyI6ihNOKRRnJeM1E1cxk3JmgIinqeLM34R8zIu2RlcRHlclFESJenZ7qKoWJyWEWOMVTUBViWQpUmRkirOaFOlZ-KCEpp6B0meUJoumjonNEpIEyVFkmcMJQRaJuTCe7_QZnsWXlhcRDSLyuxMsgqkDW-5KQ0EpRSl6zNzEaJV9VuLEiKFdXaP4IST4c14WJCu8erwReP85cNZb-TF73-xMpr6eEH_HQAA___1x8HJ">