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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] Crash when using --convert-linalg-to-loops
        </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() {
    %true = arith.constant true
    %splat = tensor.splat %true : tensor<12xi1>
    %0 = bufferization.to_memref %splat : memref<12xi1, strided<[?], offset: ?>>
    %1 = bufferization.alloc_tensor() : tensor<12xi1>
    %2 = bufferization.to_memref %1 : memref<12xi1, strided<[?], offset: ?>>
 linalg.transpose ins(%0 : memref<12xi1, strided<[?], offset: ?>>) outs(%2 : memref<12xi1, strided<[?], offset: ?>>) permutation = [0]
    return
 }
}
```
The above MLIR program will cause a crash when using the following command:
```
mlir-opt --convert-linalg-to-loops test.mlir
```
And the crash backtrace is:
```
mlir-opt: /data/tmp/v0809/llvm-project/llvm/include/llvm/ADT/STLExtras.h:865: llvm::detail::zippy<llvm::detail::zip_first, T, U, Args ...> llvm::zip_equal(T&&, U&&, Args&& ...) [with T = llvm::SmallVectorImpl<mlir::OpFoldResult>&; U = mlir::ResultRange; Args = {}]: Assertion `all_equal({range_size(t), range_size(u), range_size(args)...}) && "Iteratees do not have equal length"' 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/v0809/llvm-project/build/bin/mlir-opt --convert-linalg-to-loops test.mlir
 #0 0x00005644c88a32ff llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/tmp/v0809/llvm-project/build/bin/mlir-opt+0x150a2ff)
 #1 0x00005644c88a0374 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007fd6490d5420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #3 0x00007fd648ba200b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
 #4 0x00007fd648b81859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
 #5 0x00007fd648b81729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
 #6 0x00007fd648b92fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
 #7 0x00005644cbbe0500 checkFoldResultTypes(mlir::Operation*, llvm::SmallVectorImpl<mlir::OpFoldResult>&) (.part.0) Operation.cpp:0:0
 #8 0x00005644cbbe298c mlir::Operation::fold(llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) (/data/tmp/v0809/llvm-project/build/bin/mlir-opt+0x484998c)
 #9 0x00005644cbbe2d08 mlir::Operation::fold(llvm::SmallVectorImpl<mlir::OpFoldResult>&) (/data/tmp/v0809/llvm-project/build/bin/mlir-opt+0x4849d08)
#10 0x00005644cba795ee (anonymous namespace)::GreedyPatternRewriteDriver::processWorklist() GreedyPatternRewriteDriver.cpp:0:0
#11 0x00005644cba7c6bb mlir::applyPatternsAndFoldGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) (/data/tmp/v0809/llvm-project/build/bin/mlir-opt+0x46e36bb)
#12 0x00005644c9615ebc void (anonymous namespace)::lowerLinalgToLoopsImpl<mlir::scf::ForOp>(mlir::Operation*) Loops.cpp:0:0
#13 0x00005644cb9c3f41 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/tmp/v0809/llvm-project/build/bin/mlir-opt+0x462af41)
#14 0x00005644cb9c4319 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/tmp/v0809/llvm-project/build/bin/mlir-opt+0x462b319)
#15 0x00005644cb9c5444 mlir::PassManager::run(mlir::Operation*) (/data/tmp/v0809/llvm-project/build/bin/mlir-opt+0x462c444)
#16 0x00005644cb9b60db performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#17 0x00005644cb9b6aa4 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 0x00005644cb9b6c54 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 0x00005644cbabfade 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/v0809/llvm-project/build/bin/mlir-opt+0x4726ade)
#20 0x00005644cb9ae4f9 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/tmp/v0809/llvm-project/build/bin/mlir-opt+0x46154f9)
#21 0x00005644cb9b6dc1 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/tmp/v0809/llvm-project/build/bin/mlir-opt+0x461ddc1)
#22 0x00005644cb9b7286 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/tmp/v0809/llvm-project/build/bin/mlir-opt+0x461e286)
#23 0x00005644c87bc6ab main (/data/tmp/v0809/llvm-project/build/bin/mlir-opt+0x14236ab)
#24 0x00007fd648b83083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#25 0x00005644c88767be _start (/data/tmp/v0809/llvm-project/build/bin/mlir-opt+0x14dd7be)
Aborted (core dumped)
```
My git version is 689700439ab07619a822cf1d902b90ee2b6037fe.

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcWV1T4zjW_jXiRkVKkb8vuAjQeV-qmmoKmN3LlGwdO5qWJY8kA-lfvyXZEDsNAz2d6pndLjqJpaNH5zznQx9m1opGAZyh5Bwllyesd1ttzh6ZanZaNb8v2Ump-e7sCm_ZA2C3BVxrKfWjUA2-_nx1izujG8NaFK0QuURk5cC6RSuFeWlBKRn_wmOreS8Bo-x8eMZ1r6qF_8AoJv57iWiOaDERwRgjmjjTA0bRJWZGuO2i0so6phz27TNB20nmgqQDZbVZjA0vEKuxA0UXS_oklij6NAMgYXDZ1zUY8Y05odXC6U0LrYF6OsMKD20vQPQCW2cEB46iC09qtEbJpW_WdW3B-SG-Lfp0OOfylTmZlLrajLqOpLyrPH1P-eWxFJdCMdksnGHKdtoCFsoGNQOBPzkFLbDu3YhHj4LXgWl7FxgJHKHknPgRL-wZcL1R4zPKxp79j3kk328Bs1I_wCwT8KOQElest4AZrgyzW_y4BYV765NmnkKVblum-Ju5IoU51Z3Dp6eVVg9g3OnA-anTp1LrzuJ9vr0GsFI8zDioUbLqqzOsAizse1MG8uiaM8cQXbu2Q3T9QHJSILqW8qE97Yz-HSo3PiK6FqqSPYd9w-ryHtH13f3nT0_OMLvYomiVp4lHDhLRCkUrDo4JOfz-Jrpuh6KLN3s3tTDWeQ_f-4_f_MfKNBYvFgsUfZrAemH4o2cS0fwe0TT8hRHPP_244SmM9qmVnD8Kt8X3ITj2WHctk_JfUDltrtpOoujiub5Fqy_dWkt-C7aXLkRZiqJz_FtA2EsN_bdMNeC7g8ohALNzH1zJpedkZS2YITZTwqR80R9l58YP3VjxDRDNHaKFt2DW2L_WyIKNhbcvuwwmDgYjSq8cGOYALOYaK-2GAh-mxBJU47aIUkQzXDMhgS-G6Lj5_Gl19wnbvmyFwwyXfYMNdNo47DTeOteFwKJrRNeNcNu-XFS63YfEQeQIa3uwiK4xUxyPAfRawI7T3zlWfcW8b7uX8CULHP7djNnHTNO3oJz9gQAueyG5_xYK0fWPJx1GNCKYPBFCSJLGcZXnLKJ1PYkhu7PDjxsjlAt23HvDEM33QoY9brR1Blg7BqlQbnBb_lOmIHpOnpYJYbSufZy8aL080JpEWYzvRKOY_H-muAS_7IxKDM12UXWefRL-vwDRESireRoXhCcxJXizMWCdNrAxbrRBihLR9VOebtLY09o_nTaqHzo6tzXA-MLqBRk0jmNKZvpG02nyklFCSmyYsPAB_MojpwE5jggpZ8jxHDlf5knhq_uHNJ8gU5onxQw5OUTOXjz6YcyMzjHTOWZBa57-GGYU1TydYWbTWChLIAkhuNpC9XVf4u53nc_XfFoAfR0RWiG68hH7l8vmQMqiY8Z59xf4Bfn1iMsP1KVFXuHX9AqPtfZpMcm1lTFsdxt2E_tBK-eMKHsHQaefNubnczbO46LIq5mfikPDOcl_wPC_0RJO8hdLfPGZ1cySZUUCIY-Z0mrX6t5ixVqwXaiTxaDi_xkAvrthzoFRt_BohINLIx5gNKEzugJr_63NVyn8XiHsmt8e9X1wec2WB5pVaVlOOGZdJ5_R7Epxz1qYQsjdLDtuoQmpEYr5vnlt9Dd41mPEuQOHw5HmO-lB-VH6QqtaNF6g1FqGpDuWh1KI0rKceYhOeSjSZQJlhR-04O-5SepHMJ_DsnmvP_tF87tgs1U9sqHNly6E25t1pcAB43VnRTNnFVVUx8sJfdM95JfuXn_pbpi1K846p0cR06vZ5F5grGdvV7pJ2VBM7qyw10yxxi-Zz865wL0KB2x-1JU8Timr4-XMU_EBCXG0LH6YhBvRgRQKDjzhRV9sS4_OynSQn-pKWWfCJs6feld_JjApdM-63zADyl2pWj-n0zFThJbRspgRnxwQn8RxfKDvMwOvxtphoB9L0SqO45mi6VzRMiW89EfiWpt2VXkN7Du7Uev4mLpbZoBvOmdmp7U73ZsKrhvjz2Kv1zJ_Ur7QysGT-86111KYL527ZkINVW6CUeBJ7-tlIDu0j7EYj8vBebgN-ah5vRJ_9PCdedfQarN7hprIc6hZL92GgwS_d3hrzHgR8VGbp3KXgkmonF9PrDO7sX8_z33YOt9oLa-UA1OHWrz6EG_5IW9VEk-QP-tGVEwOm4JJe92rEDSb4UrmrQGI5r-O17e9WwQh31MxKf25clOr2XI04ekfGCev-_-DuTOIIJpJ1pacIZr9k7xCc6lV82uJ_ROV3k-Y-QaclTXjMHGF7aRwK8VvDkrP32Hdf2GS_qnE7EjmjFCNP8K91XysxTSjKeMwXUzp_OhSMIjr4vV0_F8rJsfaoCyTuJ7tpOjycCHi1fJNTsedY7Vlwx7x8PLh3eB4j5DjGcp5NdurU3pgaEbz9CiG_iqLgObpzKLZESzPyiplJW6ZUEe6uoxplLLZ0ZQeXthFJI_wZiNFWW2sY8ZtJvN_9KItJnk0myWZX5BmaVYCHvCPZRrnWbkvLqtSGwfhfF1pA-GyG_hep_nbmusdboTDD2Cs0AoLi9O8yAiJo4KVJEuXBcspreolLwgtCwJAy5REWf18o37CzyJeRAU7gbNl5neDaZEmJ9uzOqXLslimNU2rMiuAVJDxMi1yUmQUanIizijxfJGCZITGySJhdVaTEkjKaZQzQDGBlgm58GQstGlOwnX_2ZLQJEtPJCtB2vDimdIQuJSi5PLEnAXyyr6xKCZSWGf3CE44GV5WhwHJJb44fL_25qX9SW_k2V9_QzFq_XBG_xMAAP__nad3Ww">