<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/59455>59455</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [mlir] Canonicalize crashes with assertion failed "Iteratees do not have equal length"
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          Colloportus0
      </td>
    </tr>
</table>

<pre>
    MLIR built at commit https://github.com/llvm/llvm-project/commit/0ee6bad6a6725c2913116a8fa7769b067c219f0
Reproduced with:  
`mlir-opt --canonicalize temp.mlir`

temp.mlir:
```mlir 
module {
  func.func @func1(%arg0: tensor<7x2xf32>, %arg1: memref<12x7xi1>, %arg2: f32) {
    %c4 = arith.constant 4 : index
 %c10 = arith.constant 10 : index
    %cst_256 = arith.constant 1.000000e+00 : f32
    %256 = vector.create_mask %c10, %c4 : vector<12x7xi1>
    %261 = vector.extract_strided_slice %256 {offsets = [3], sizes = [5], strides = [1]} : vector<12x7xi1> to vector<5x7xi1>
 %262 = vector.fma %261, %261, %261 : vector<5x7xi1>
    return
 }
}
```

trace:
```console 
Assertion failed: (all_equal({std::distance(adl_begin(t), adl_end(t)), std::distance(adl_begin(u), adl_end(u)), std::distance(adl_begin(args), adl_end(args))...}) && "Iteratees do not have equal length"), function zip_equal, file STLExtras.h, line 893.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: mlir-opt --canonicalize temp.mlir
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  mlir-opt                 0x000000010290e568 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 72
1  mlir-opt 0x000000010290ea84 PrintStackTraceSignalHandler(void*) + 28
2 mlir-opt                 0x000000010290cb34 llvm::sys::RunSignalHandlers() + 148
3  mlir-opt                 0x00000001029106f0 SignalHandler(int) + 252
4  libsystem_platform.dylib 0x000000019970d4c4 _sigtramp + 56
5 libsystem_pthread.dylib  0x00000001996f5ee0 pthread_kill + 288
6 libsystem_c.dylib        0x0000000199630340 abort + 168
7 libsystem_c.dylib        0x000000019962f754 err + 0
8  mlir-opt 0x0000000105153e04 llvm::detail::zippy<llvm::detail::zip_first, llvm::SmallVector<long long, 4u>&, llvm::SmallVector<long long, 4u>&, llvm::SmallVector<long long, 4u>&> llvm::zip_equal<llvm::SmallVector<long long, 4u>&, llvm::SmallVector<long long, 4u>&, llvm::SmallVector<long long, 4u>&>(llvm::SmallVector<long long, 4u>&, llvm::SmallVector<long long, 4u>&, llvm::SmallVector<long long, 4u>&) + 272
9  mlir-opt 0x0000000105153848 (anonymous namespace)::StridedSliceConstantMaskFolder::matchAndRewrite(mlir::vector::ExtractStridedSliceOp, mlir::PatternRewriter&) const + 332
10 mlir-opt 0x000000010515368c mlir::detail::OpOrInterfaceRewritePatternBase<mlir::vector::ExtractStridedSliceOp>::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const + 72
11 mlir-opt 0x00000001074f4fcc 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&)>) + 1356
12 mlir-opt                 0x000000010680c73c (anonymous namespace)::GreedyPatternRewriteDriver::simplify(llvm::MutableArrayRef<mlir::Region>) + 1640
13 mlir-opt                 0x000000010680bf84 mlir::applyPatternsAndFoldGreedily(llvm::MutableArrayRef<mlir::Region>, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig) + 240
14 mlir-opt                 0x0000000102ff0c74 mlir::applyPatternsAndFoldGreedily(mlir::Operation*, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig) + 76
15 mlir-opt                 0x00000001066ee150 (anonymous namespace)::Canonicalizer::runOnOperation() + 132
16 mlir-opt 0x0000000106674c58 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) + 512
17 mlir-opt                 0x0000000106675328 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) + 364
18 mlir-opt                 0x000000010667756c mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) + 108
19 mlir-opt                 0x0000000106677344 mlir::PassManager::run(mlir::Operation*) + 864
20 mlir-opt 0x000000010665c61c performActions(llvm::raw_ostream&, bool, bool, llvm::SourceMgr&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, bool, bool) + 560
21 mlir-opt 0x000000010665c1b0 processBuffer(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, bool, bool, bool, bool, bool, bool, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, llvm::ThreadPool*) + 496
22 mlir-opt 0x000000010665bf78 mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool)::$_0::operator()(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const + 204
23 mlir-opt                 0x000000010665be8c mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool)::$_0>(long, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) + 80
24 mlir-opt                 0x0000000106867440 llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::operator()(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const + 96
25 mlir-opt                 0x0000000106866f24 mlir::splitAndProcessBuffer(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) + 128
26 mlir-opt 0x00000001066598cc mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool) + 320
27 mlir-opt                 0x0000000106659ad4 mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, mlir::PassPipelineCLParser const&, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool, bool) + 296
28 mlir-opt                 0x000000010665a698 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) + 2912
29 mlir-opt                 0x0000000102124f50 main + 148
30 dyld                     0x00000001204e1088 start + 516
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWl1v47jO_jXujTCBLH9f9CJN23cLtGjRDhZ4z00g23SiM7LkleRuM7_-QPJH7TSZZmZnz-kuthjEHpmkyEckRcqmWrONADj3ogsvujyjrdlKdb6SnMtGKtNqfJbLcnd-d3vziPKWcYOoQYWsa2bQ1phGe8HSI9ceud4ws23zRSFrj1xz_jxcPjVK_hsK45Hrjs8j1xggzmkZ0zghUUEyP_D9mKYVTZI4y3GcFMTPKuzhSw8vH6FRsmwLKNHvzGy9YIlQ98SLcc2Z-iQbgz59KqiQghWUs6-ADNTNwj704l5M9_s6HixHId0_O9oLrmXZckBectH9H6GqFcXC_iAvxPbqeyT1SETVBluNDAgtlReskhfyUgXEC648skIdhW8paqgVVF6w8slL8sL8GQWxFJaNZNNZkX1chMgLLhFVzGwXhRTaUGGQHVwiJkp46aktqY8P0brROXEvWps1ieKDPAvs_sAjF7jjt_pNuQfOZyiMVItCATWwrqn-0uvS21d0unZkcwBm4mJ_Kg5ejKKFWWujWAnlWnNWwDhtciGrSoPRjsWLLgIvurTzafYVxsFoGHQyxmHfDieXx7RCRr4OR3u6OkXJVNGqpr36vb2zu_kk-9IQQgpMq8QgPbnsvXK8Gdxz5sWKFvDWg-3iSeu3bnipNSjDpEAVZRxKq4hHUsr5Gn5rKbcOnFxoYx94wbJkduELsCQlX-ewYcIjqfFIZq2xYyDKcSTrcP02c_uGuT2dmaqNfsM_DmaLxcKCZAOGxB6JkUfIjQFFDYBGpURCGrSlz4CctYiD2JitR0gv0waxQ-crawZAVqhiHNDT59sr6316sbVjnAlAaRYsOlwfbq-WT1dIt7lNghTl7QYpsOnSOs53J0WmdQvaI9eIihIxUfC2BGS2gApF9RbltPji1ruf_snQ4gsq27oZHQAvPJw9KLlRtEZUbdoahNEu6bybHvdkuhQrW4P0rs4lR4LWNm5ICkK3CtBOth2ozoqOiH0FhZiwzxR6WH7-BUmFNBhnBIhnpqSwGqFnqpAX49vbX-_WT_9_d3F_e_Ovq8e1ZfFibNFrJBMORua8bDQQvVqy_4dfukSFfUwyDFGcOt0619I73d08KCaMM_Ozix2SvhIp-vtaaqOA1s6VVogJ0znWBUr6nOdPVNibkqYh2pP_xDaC8l-oKDkoj6TPkpUeWQ5CSdoJJaeaVeRBeMisx1bMptJuV-om8cN-luBU9HwcVxjt6z4Bg0Q9GiFCnOV6pw3U64ZTU0lVL8odZ_lEZJYluAyLEK012xhF68ZJieJOSDSVYbYKaNmLmMmIqwgAo55i_YVx3oPY2xdP5BSDhH3zsiwOcBBiRHMbqQ6guBeQnCiAVEkUIlDKsfcZOT3sGJEfBYCni1aCoYx3919Z0-y8YHX06bpiShuXfUaSp5py_uuwlXApNsj-WKKwdeVE_F9gCK4mDK-5c2rLR1F0FuUfQ6khkIa0kh33njRM3X4tpNjVstVdLm5c9sr6Gbva6MmWRqu-cruj-su15CWojqamptguRfkIvytmbOYbyt9gOdQl9v6qq7emIu8bq_sr-QM1BpToJaneHlcyOquCoUD08VGr4rSYSJx6_X1zr26EAVXRAvo5-hkvqAYvWH2P4sHV--bfN7ZcYFK41Pw9lo67gn_Q0CSswqoo3gpcNg1nBR11_3naTR1xKG3WXcORS2kzZvpGQGdQZ1zfjhwVYnewPyzklflWbmwt8gi65eY0uf2uFgzbh3_a7hmnuEiC4r1Q-j8FUO7myF4q9jyEkWZ1w1m1m-WUu9bQnMNSKbp73LPwETZ27Saax2G_ZfjBqZrnVRpOFp42DR901EtR2jh3ijP-Q4pNnepaya8g5nH3BGayDFPqDq6eeiVFxTZjbhvNDE-rO6oKF8l3mHlKiPw0a5LB26LT1iwG8CP8nretJsV4r4Nqxb2YGPRax41ZNT6YbOI4CYsoPZpVP8v75oFqvSxpMyYe1Yq9oNP6DYjH4V0Kynea6Tsq6MZmoBWyWcZeW-HOlMppER35gwnJiSgmUUC-36QH1oDt1vacxJKOmsY_3cZ5atb6RmijXA8m1YHcPSXoZu4e9Lo_UAXC3IhKDs46tg1BHPYwpqfCmERxsTf7YM8IGtXaNqAnxdUbUHofxX0p7WcnaxaE4TuafUOnbtp0AIQcLjjiOCpiv0ANKNugLN1epN9p_oZFHq6TAk-2qoC7zVsvuru9eVxJYeDF9JD90T1w7rHDzjrXrQ-u4WyIHC5GLAh-jlGjZAFaX7RV5fq6b2Ewns2s13530wr2WwvrxqhZqX8HtVS7QeYhxhIq2nKzLoGDgePMtmA7YOP71z8H6VeKS0Y5FMZum9qo3Ztq67PrSx-cNqNnhlm_bxBybFHyKplmuDvO1H1j7qg7_Pqoi_O_Aft7XaIPj06kR8I17m6lyyE2K6fuFDD9GFDuL_G00yB4SHEnFo1xlMOsx5qvx48s4AdFaezxCsp5Tosv60rMDPknpP7ckHIHLP0Jx8dA8G0kuTJh2CBPa0jiNE7CEP8tQ-UvmAHHnfTEDiyN44pMS0vdcGaWonzYK4A-hul_C9_6JsXhstUfX4Ica2ujLJ2dof2Tzn96Ou_aSjLkx1O78yijZfiXW5k5ykO_vbp9oEqDOnI09DPhnsNOxsR2ajcf0Tg73jL0ZxHFlnanDntt6JNRTGweoTrdvkHP4fSGnNbcE5-EVYRRTZnYexOJUbnj5RvmuQCCQ_BxmiJtaP-qLvLjvW8dzsrzoMyCjJ7BuR8nOPUjHIRn23NSFWVRQERKyIMQU8iA-CkOKUnjrIqDM3ZOMCE-8QkO_MQPFzSPwqAkSZjkUYVz8EIMNWV8YcFbSLU5c-_oz6MsjKIzTnPgevhiSp27F-F5u9FeiDnTRr-yGWa4-7bKwR1doumxX_d6H7R7447o3scaJ3_NcNYqfv7jHx04m_4TAAD__58Objo">