<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/132886>132886</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[mlir] Parser crash 'vector.contract'
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
wwy6191
</td>
</tr>
</table>
<pre>
git version: 59fd2878fce470f02058f43d4b818ed68ce04094
system: `Ubuntu 18.04.6 LTS`
reproduce with: `mlir-opt a.mlir`
a.mlir:
```
module {
llvm.func @matmul_mk_nk(%arg0 :!llvm.array<4 x vector<16xi32>>, %arg1:!llvm.array<4 x vector < 16xi32 >>, %arg2:!llvm.array<4 x vector<16xi32>>) ->!llvm.array<4 x vector<16xi32>> {
%0 = builtin.unrealized_conversion_cast %arg2 :!llvm.array<4 x vector<16xi32>> to vector<4x16xi32>
%1 = builtin.unrealized_conversion_cast %arg1 :!llvm.array<4 x vector < 16xi32 >> to vector<4x16xi32>
%2 = builtin.unrealized_conversion_cast %arg0 :!llvm.array<4 x vector<16xi32>> to vector<4x16xi32>
%cst = arith.constant dense<0> : vector<4x16xi32>
%3 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d2, d1)>, affine_map<(d0, d1, d2) -> (d0, d1)>]} %2, %1, %0 : vector<4x16xi32>, vector<4x16xi32> into vector<4x16xi32>
%4 = builtin.unrealized_conversion_cast %3 : vector<4x16xi32> to!llvm.array<4 x vector<16xi32>>
llvm.return %4 :!llvm.array<4 x vector<16xi32>>
}
}
```
stack trace:
```
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-project/install/bin/mlir-opt /data/szy/MLIR/seed/seed3/tmp.b095sQl65J.mlir
1. MLIR Parser: custom op parser 'builtin.module'
2. MLIR Parser: custom op parser 'llvm.func'
3. MLIR Parser: custom op parser 'vector.contract'
#0 0x000056043de9bdb8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x11bddb8)
#1 0x000056043de998be llvm::sys::RunSignalHandlers() (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x11bb8be)
#2 0x000056043de9c736 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#3 0x00007f8fb3e4f420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#4 0x000056044071b347 mlir::vector::ContractionOp::parse(mlir::OpAsmParser&, mlir::OperationState&) (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x3a3d347)
#5 0x00005604440047e4 (anonymous namespace)::OperationParser::parseOperation() Parser.cpp:0:0
#6 0x000056044400f9a4 (anonymous namespace)::OperationParser::parseBlock(mlir::Block*&) Parser.cpp:0:0
#7 0x000056044400d85c (anonymous namespace)::OperationParser::parseRegion(mlir::Region&, llvm::ArrayRef<mlir::OpAsmParser::Argument>, bool) Parser.cpp:0:0
#8 0x000056044400bacc (anonymous namespace)::CustomOpAsmParser::parseOptionalRegion(mlir::Region&, llvm::ArrayRef<mlir::OpAsmParser::Argument>, bool) Parser.cpp:0:0
#9 0x000056043f17c071 mlir::LLVM::LLVMFuncOp::parse(mlir::OpAsmParser&, mlir::OperationState&) (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x249e071)
#10 0x00005604440047e4 (anonymous namespace)::OperationParser::parseOperation() Parser.cpp:0:0
#11 0x000056044400f9a4 (anonymous namespace)::OperationParser::parseBlock(mlir::Block*&) Parser.cpp:0:0
#12 0x000056044400d6d5 (anonymous namespace)::OperationParser::parseRegion(mlir::Region&, llvm::ArrayRef<mlir::OpAsmParser::Argument>, bool) Parser.cpp:0:0
#13 0x0000560440fc2b9e mlir::ModuleOp::parse(mlir::OpAsmParser&, mlir::OperationState&) (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x42e4b9e)
#14 0x00005604440047e4 (anonymous namespace)::OperationParser::parseOperation() Parser.cpp:0:0
#15 0x00005604440035ad mlir::parseAsmSourceFile(llvm::SourceMgr const&, mlir::Block*, mlir::ParserConfig const&, mlir::AsmParserState*, mlir::AsmParserCodeCompleteContext*) (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x73255ad)
#16 0x0000560440ea2f0f mlir::parseSourceFile(std::shared_ptr<llvm::SourceMgr> const&, mlir::Block*, mlir::ParserConfig const&, mlir::LocationAttr*) (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x41c4f0f)
#17 0x0000560440ea1e8e mlir::parseSourceFileForTool(std::shared_ptr<llvm::SourceMgr> const&, mlir::ParserConfig const&, bool) (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x41c3e8e)
#18 0x0000560440ea167f performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#19 0x0000560440ea13ed 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
#20 0x0000560440f4c275 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-project/install/bin/mlir-opt+0x426e275)
#21 0x0000560440e9b405 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x41bd405)
#22 0x0000560440e9b6af mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x41bd6af)
#23 0x0000560440e9b9de mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x41bd9de)
#24 0x000056043de7a337 main (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x119c337)
#25 0x00007f8fb346d083 __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:342:3
#26 0x000056043de79e9e _start (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x119be9e)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzcWd2S2yoSfhrmhhoXAvR34QuN57j2bM1Uspns3roQIJuNhLyAEs95-i2QbMme8fzkeJOcTU1sGWi6v-6vu5HErFVrLeUcxDcgvr1indu0Zv7t22MS5dFV2YrH-Vo5-FUaq1oNSAHjvBI4S7OKS5qiCmEUZxUlgpZZlEmRZFwiinIKUAFQYR-tk42XAwn6Z9lp18EomyE6S-Dd5weQoH6dkVvTio5L-E25zbC-qZW5brcOQshm_sdhOUDFMEIKCP1Agvo__6NpRVdLCNIbgApY11-bWdVpDgFFDXNNV6-aLyv9BeAM4JiZNYKAFABHYSUzhj0CsqBwB79K7loDyCJKdopgQH7zf3gBe7noRTEIyAL2gvBUEr9PYQ6vw_cbBfbIIfTqPLpbWHaqdkrPOm0kq9UfUqx4q4e4rjizbm_au5wBXTtO0N04dVAfvU999LL6p0593QL8Pgvex4bX1XO_M7mFzCi3mfFWW8e0g0JqKwFZoBAwUpzdBeCYhA36BX4HZxh3PspKC7lTer1q2NaGRSC-YVWltPRDgCwAzgTyxBNR-MR7NsFxxo8N9HyHLN7PfIcsOpKNb0F6GyI1ZEg0fKPzjsGLZ8eh0q8GhL6DD-SsBdC1b8_gXndYbKTrjN7b8Y4q4KmQ3vpa139OK551jH-BnhbS79nXyOmCj3e_FQ-_QduVjXKQwbJbQyO3rXGewBvntjYYswR4uVZu05Uz3jYAL71xw9f11rT_ltwBvFTWdtICvIRMC6g0rzshodtIyA2zG1gy_iVYMwOoeAjGia7Z9rahGQz_Ppp2bVgDmVl3jdTOhrKPl4I5BvDS_vEI8PL-7vdPz-j3SVTXAC9LpQFeHjrFGXErpRi-CMBL12xnJcpj-486if_eNxJURINdXgZ-ZMbK0F54Z13bwHYLt2EMApzuydN3GoBTgAr8dvFDS-olydslT2pALw8BJgiiHUIIxQmiRMi8FGUWCOd9Tnwf7i8-GqVdiMjnwBacjYsM-7ZqrTOSNQAnPsWUdj5vQ6f8M3EB-AbtoqgUosx80vc2Ryc251kpn7P5U6cf1Fqz-m9Mi1oaG-y5oFllVsrRLHxiFk9JAo8MADgLnllAq9ZKV-3KAVyEmtQqES7zQcLO-NbzHoX_vQIyKEirrCqJpBXFCK5WRlrXGrkybkBWqxLg5S5LVgm9rpXudtdr3fUTW7cxkomZbWeoh0EpRiMIOgFBURqVhKZwODEBUuxLjL9eDGRSrf6w7YcC4QDORoEP28I2Azd7bkznpGFe_MExJ8P0pYJDGBGEpiOueIqLIkRTSb0uplv92LSdhZo10m4Dt_MT-w65tYd4mBkY1S94JmTJidoqZ39C7U3d8i9H7h1GisF5Z-1IT-wQWcy_345Pct1jHw3ZD4UQj7lY-Pb0SVaALJ7nxLCqr-RDgy7btn4RTXaCpmT8VTSLUBWfqB7C6WGy-mfjyqcVpIpSjtJoki93d_-6H6-Wnea_XN5hmkuURn3e-VKNfnzeebXRL5B33g58mneJiP-aeefRkKPmUHFc5nLCq_twqvnlOEmxpGUuR07Sn8PJ0xZEYiYmHgibFbZ5aDvD5VLVx4esfvh-bWC4FXziwJGR09HemEWrK7U-I3iIyeD54sz0ohVy0TbbWjrpW7_cueHEcpkwpQTHMRNjmI56J5IMV6g69deRs6wTwwlww4wUq63zN0PPuNDfhl3Yi3ctDyQonDMXdQuNOK1QNbolPXFLJDN53i3L1nwOaX0J75z1w75yXAwykdkkYbNTyElawa00VWuaIhxA7Ss3JBcA74FMeX80VyvzYevumdJPvJPDyewzZSE_BUekmFTyu3atuD-a2K52k3F_G-iRr0yo8ucEpoHvtPpPJ59gv5dNax5vuqrydXniKyEr1tVuJaTP-fMyh4eU5yMQnteEGc7q2t_mryp91JwmTnprLP_neEbrbhWrJXe-21pnHp-S4yUC9EsApisUNs7qVq9_LJIXIvMyPTE67vmU4zSeALfbWrlCi4-m5dLava0_hXR_wZR4ccV07sEZpdf-RHdu-HLHpUTiND5UXxwdF6i8pCh-nvr_b4l7sX5WCoomHsWnHk1YddajwxMjvmH9waJ4LzFec8clYSZsPKlgcgozF_IiMH8cnlyMxxBMjx_wpYyQFDZM6Ys9Ucw5IemoMD564EcTgTICV6talXxlHTNuNWhflp2qBcDLtZ-7vuO_Y7Q7_MQzEgG85LYDeDmbHS7DZNhnxgEpCMX-c9CdnIDNZS5hr_VycEt5uC87vHW4EnMicpKzKzmPUoqzDMdJdrWZVyRmksUJi0WW5xWXUuakIljGeZqhlF2pOUY4RgTHKEGYZjOM4jQlSVzRVErEBaBINkzVs_AgvTXrq_BCYh4RnGXJVc1KWdvwThvjwDGMQXx7ZeYBVtmtLaCoVtbZcQenXB3egweB-Ha4_xteaDz76P2qM_X8-9-dDNZ-neP_BgAA___JgI77">