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

    <tr>
        <th>Summary</th>
        <td>
            [MLIR]`-test-linalg-elementwise-fusion-patterns` pass crashed with assertion failure `isReassociationValid(reassociation) && "invalid reassociation"' 
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    Test commit: https://github.com/llvm/llvm-project/commit/b92839c9548a55bc7a3267b05d11c9d9c530b792

Steps to reproduce:
```
mlir-opt test.mlir --test-linalg-elementwise-fusion-patterns=collapse-dimensions-control=2,3
```
Test case:
```
#map = affine_map<(d0, d1, d2, d3) -> (d3, d0, d1, d2)>
#map1 = affine_map<(d0, d1, d2, d3) -> (d0, d1, d2, d3)>
module {
  llvm.func @malloc(i64) -> !llvm.ptr<i8>
  func.func @main(%arg0: memref<41x3x1x57xf32>) {
    %c0 = arith.constant 0 : index
    %c9 = arith.constant 9 : index
    %c1 = arith.constant 1 : index
    %0 = bufferization.to_tensor %arg0 : memref<41x3x1x57xf32>
    %1 = tensor.empty() : tensor<3x1x57x41xf32>
    %2 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%0 : tensor<41x3x1x57xf32>) outs(%1 : tensor<3x1x57x41xf32>) {
    ^bb0(%in: f32, %out: f32):
 linalg.yield %in : f32
    } -> tensor<3x1x57x41xf32>
    %3 = bufferization.to_memref %2 : memref<3x1x57x41xf32>
    %4 = builtin.unrealized_conversion_cast %3 : memref<3x1x57x41xf32> to !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<4 x i64>, array<4 x i64>)>
 scf.for %arg1 = %c0 to %c9 step %c1 {
      %5 = builtin.unrealized_conversion_cast %arg1 : index to i64
      %6 = llvm.extractvalue %4[1] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<4 x i64>, array<4 x i64>)> 
      %7 = llvm.getelementptr %6[%5] : (!llvm.ptr<f32>, i64) -> !llvm.ptr<f32>
      %8 = llvm.load %7 : !llvm.ptr<f32>
      %9 = llvm.fmul %8, %8  : f32
      llvm.store %9, %7 : !llvm.ptr<f32>
    }
    return
  }
}
```
Crash trace:
```
mlir-opt: /home/ty/llvm-project/mlir/lib/Dialect/Tensor/IR/TensorOps.cpp:1322: static mlir::RankedTensorType mlir::tensor::CollapseShapeOp::inferCollapsedType(mlir::RankedTensorType, llvm::ArrayRef<mlir::AffineMap>): Assertion `isReassociationValid(reassociation) && "invalid reassociation"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /home/ty/llvm-project/build/bin/mlir-opt test.mlir --test-linalg-elementwise-fusion-patterns=collapse-dimensions-control=2,3
 #0 0x000056388ca9d9da llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/ty/llvm-project/build/bin/mlir-opt+0xd619da)
 #1 0x000056388ca9ab4c SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f8e00e5a980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #3 0x00007f8dffb0be87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #4 0x00007f8dffb0d7f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
 #5 0x00007f8dffafd3fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
 #6 0x00007f8dffafd472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
 #7 0x000056388dda3b99 (/home/ty/llvm-project/build/bin/mlir-opt+0x2067b99)
 #8 0x000056388ddc70c2 mlir::tensor::CollapseShapeOp::build(mlir::OpBuilder&, mlir::OperationState&, mlir::Value, llvm::ArrayRef<llvm::SmallVector<long, 2u>>, llvm::ArrayRef<mlir::NamedAttribute>) (/home/ty/llvm-project/build/bin/mlir-opt+0x208b0c2)
 #9 0x000056388d25c15f mlir::linalg::collapseGenericOpIterationDims(mlir::linalg::GenericOp, llvm::ArrayRef<llvm::SmallVector<long, 2u>>, mlir::RewriterBase&) (/home/ty/llvm-project/build/bin/mlir-opt+0x152015f)
#10 0x000056388d25e05d (anonymous namespace)::CollapseLinalgDimensions::matchAndRewrite(mlir::linalg::GenericOp, mlir::PatternRewriter&) const ElementwiseOpFusion.cpp:0:0
#11 0x000056388d0ba057 mlir::detail::OpOrInterfaceRewritePatternBase<mlir::linalg::GenericOp>::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const (/home/ty/llvm-project/build/bin/mlir-opt+0x137e057)
#12 0x000056388f2e6d84 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&)>) (/home/ty/llvm-project/build/bin/mlir-opt+0x35aad84)
#13 0x000056388e9dd93d (anonymous namespace)::GreedyPatternRewriteDriver::processWorklist() GreedyPatternRewriteDriver.cpp:0:0
#14 0x000056388e9e0b1a mlir::applyPatternsAndFoldGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig) (/home/ty/llvm-project/build/bin/mlir-opt+0x2ca4b1a)
#15 0x000056388e4b91a9 (anonymous namespace)::TestLinalgElementwiseFusion::runOnOperation() TestLinalgElementwiseFusion.cpp:0:0
#16 0x000056388e9440ae mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/home/ty/llvm-project/build/bin/mlir-opt+0x2c080ae)
#17 0x000056388e9443ea mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/home/ty/llvm-project/build/bin/mlir-opt+0x2c083ea)
#18 0x000056388e9447d2 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::'lambda'(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&)::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const Pass.cpp:0:0
#19 0x000056388e9437f5 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) (/home/ty/llvm-project/build/bin/mlir-opt+0x2c077f5)
#20 0x000056388e943ff2 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/home/ty/llvm-project/build/bin/mlir-opt+0x2c07ff2)
#21 0x000056388e944f03 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (.constprop.510) Pass.cpp:0:0
#22 0x000056388e94558d mlir::PassManager::run(mlir::Operation*) (/home/ty/llvm-project/build/bin/mlir-opt+0x2c0958d)
#23 0x000056388e93750f performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#24 0x000056388e937c91 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, llvm::ThreadPool*) MlirOptMain.cpp:0:0
#25 0x000056388e9389c1 mlir::LogicalResult llvm::function_ref<mlir::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
#26 0x000056388ea17f70 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) (/home/ty/llvm-project/build/bin/mlir-opt+0x2cdbf70)
#27 0x000056388e930f63 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/home/ty/llvm-project/build/bin/mlir-opt+0x2bf4f63)
#28 0x000056388e9363be mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) (/home/ty/llvm-project/build/bin/mlir-opt+0x2bfa3be)
#29 0x000056388ca604f0 main (/home/ty/llvm-project/build/bin/mlir-opt+0xd244f0)
#30 0x00007f8dffaeec87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#31 0x000056388ca7319a _start (/home/ty/llvm-project/build/bin/mlir-opt+0xd3719a)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWltv2zgW_jXMCxGDInV9yINj17NdNJugKbrAvBiUSNncSpSWpNp4fv2CpGxLit24TdCdWSzQxhJ5eC7fufBQEtVabCTnNyC6BdHyinZm26ibW06r33m73amrvGG7m09cG1g0dS0MIHO4NabVgMwBXgG82giz7fJZ0dQAr6rq6_7nulXNv3hhAF71S_Eqz3BKsiKLwpRGUV4klOA4yVHEgqDIWFZEBOVJhgFaAjT3fx8NbzU0DVS8VQ3rCm5Fe4IY9f_cbV0Jdd20Bhquzczewetre31dCUmrzTWveM2l-SY0vy47LRp53VJjuJIakGXRVBVtNb9moubSzurropFGNRUgSwzwgpwU69Gh-qxeAJOathCQJaRlKSRf17QFZAFwyhDAC8gC9xe7vwTgDF4D8g7aeeLGJlQZIO-GrIOf4316_sC7blhXcQiSW38PoXXrrOxkAUGIalpVTQFwKuJwwDZwRK1RgCxEemAGoV03WCwkwCnAEVUbZIOq5rXiJSCLMHgiT8FTlDyVBNv1OBvqACHAUYG8xUqY7axopDZUGmgH51BIxp_G1Nkp6uwcdXCKOjhD7RXJu7LkSvxBjWjkzDRrw6VuFOztg983cMjPC_fLZ7xuzc7B5JX1w4As-vVhcIoFdix8yM82XHIlCougU17IjY0Q7Whs1rsAss7vQwlES3snDFfUNGptdi0fUOOWKlpVvAIY-1U_PBItQbKEQmofAGhs2in3N53piYMXcHgWK9G7PEd-rZB2rSV0OkVNZw4D2SF398DtBK8YdMvgnuzINln6eL_MI-R0kPiI2LtsECHfZRb2zERlhJx1UnFaiT84WxeN_MqVrVvrgmqzF_wdvraq7jNWG9UVxlcOn717SBdweu8yfgGpUnRnXQaf3JCfPDV6LCpQF-WsPKSGD3ef0U4Zm6za8HafiUNnOvOjHzC_F9DnrRVgFRrzi322WAj4k1G0MF9p1XGHNIhubT44Fr8MJzhRMDkquOGm38Ja4xCMXU5G0VHJdFyBJ7qcrNLTGHNS06PUqqFsr8j8krXZcW1Zd5Vj1-dcCp8nU7-vaNMoB3vW014iDyTL443iplNyf3-YOl6Mt-WFonoLrctf7Ci8IqttU3OAV7YmT1scS2lHRQ7wailo5Yc_-fqAV-8_Hu7uWz0r2haQeUAwtqy1oUYU0PEgc0DmH6n8wpkn_7Rr-WBqX3Hs9aLvWB63tOX3rR8UsuRqP8PsaoDT86wt2K5rc7NzG5QfXbE4Lpm7xuLO9hU-RudwrjVXto5BECOhP3KqdVMIV9o-00owgFM1HHSVGccAx3Y7EPKrJYITEgxwAksqKs5m3gEPH97NH99B3eW1MJDCvNvYPrBRxmbzDzeiQuuOa4BXkEoGhSyqjnFothwWLhhyWnxxATHb9560-AJZV7eHCEEzgLIH1WwUrSFVm86mo345QGzFYvbXNj6rX9Wq2l0dQfSEEEJRTNK0oBnLGB24XO-0v3hQQhpn8SeXEzg9Ein6bd1oozitnRcXUEjjfZr-jN0A36InFgcZozaiDroGE11pHhbwUWwkrf5GJau4sg2nF-2H97mE3P8DI9wzSsqUI8QjmqUIrteKuzKzVqbX3CfsUxqv49Bi3z1db2TnJ1qzVZyymW5myCkc4CxFI33JUQwryxzlPE2gokLbSnawfVOJvLhefP77t9_zwy2e4QTglXZWALyazezdTjPe2gjtpHjyA1-dNrKzt471rABkHgVjg8OJJiwpA0jzxll6mSaGeTTcKicknQiJRkJoyUhJ4XpNXTVY28xd5_Ry2_26w4UXmY1FxlORYYIv8F1hvRY7rxEUJnjktWQYZYxRkmevi2SM4iTPspGQdCykSFCBf6SO9-IGpfu-vbVjNgdcCg5nbLcuGvloqOHPpj_bjuZsoT8OPtoz3WdeGNfSVo3c2EW4s3XfdxEv7BT_oDVnc2OUyDvD9w35q4BNc1SMvZeNgLVtYlQOjPUF1F_v6-Rv_hR03743PVBLUesRuMNlB_I3wWyw9_Jvyh6sbqn2TnodOEGEURCVB3Bs_UQTcDiKbPOWUtnIXd10Gkpac926Ap-Nw--Dg2B52FL8bE1NsZ1L1it_GWhHkge_a-1N781252r47rjJ3bcrt8s9r-bWqtG2wFBOUZQMZDBuqKj2qXCv3kvDVUkL3kvtdXCwD8P1tPrWcS8Zfkg4gOeX2_sqZ5OEoygZORsPYSkxj1kaPldl3raVKKjZV5u3s2uYHGUnC7tw7Y-aedPYxj99xsBD4WF5VlQmTL42gr2ayXHxh2YjClp95LqrzGV8X5egJKKUpeHIZ2ToM54xlpEXE_Q3xTnbjT2wVOIr77VvVVNwrf_ZqC-VsPq7J0bnV51OsnCsGUd5QAcBQNu22nPTc8lWTcWcCFHtxicMvnEBNNmEVqr5g8txRj5yM4B8SO2V76kXjSzF5tV7SUHDPKAjb0Qjm8M8C2j2kjc-cW18qRzUL1-9-ma5k_dykEnOG99Zddod8dgdYYgoP1vzPjX37QPVes5oe0h01clJkGv9LK_PZ_xc0mqnhb6jkm5sxi-gzWr720n33oC9xSkAFyhFlI_ckkxtJ5z-sO0PouWVkNMCZ0kPJp3ro34ejHHN1Pq91Ea5Q2KjThTVIYGX7Cd63R-o4tK8l2Wzz5P5W-BN-DgN0ineCcM_jPcg5ud6J4v3dVsBnHqY-twBOKlondtTXzLyy9uJuG8f7ixg-ypux5rWP832ufhLBPdbvmV2Or-zCeYkKaM3xvy1cZIkZTSME4ymOpflj8fJX6MmJWWJR7YH0xwpEfl_TRrVJP-6rFVNO4sCZAfPhj_GEzijKGUTLfZ2nQycMSyvdncWpWzk7kmfRpIIlbDlqmxUPXf9pX7hCZk2rH_CtqWKs7V_gj04OTadKvjdRgHy7kwXdPfh_cdFIw1_Ms_8dFcJdd-aOyqk74-GzSsczJ7GP5zaV2QB7BvJW_em6lLzOin-3fFn5t3xulG7PasBPeMl7SqzZrzihp9fc-IA_T2bh3T9A3jbiWqjds8OK5_cg70Hlyzzi-CKJnClWRHAc0eLnzmL_Do4zzs1O5x9C1pVOS2-rEs5UnuA058wPE67_cKUOdmg_Gm8gtP9o6U_hUovJ8z4-EKDpEzQwBW6rYSZS_YwqTj_Dev-gkn6XYpjG_A2fSDLywSNNsfJ-YygMian8-x_rUq8Dsq8DMuYjKCcHL1ITHJ-Fsq-myu21Pdt83EgPBol5OYjLy8x-E1iIy8pyUdnd5yNX-HFKCwRrKmQr3tXiG3DPRR0eK_ZvxnivEgTuF5XIi_W2lBl1r3Ui95FFbrbv4Tzl27S8XHvpUgYjgrc9FVlQoKMQi_4dZaSJMgGx_P9FwlX7IawjGT0it8EcYpxFKMEX21vME4CznGehTFBmLEwRClJQpTwJImyEl-JG4wwQSEmAcFBgGcxLTHOC5yHcZlGDIEQ8ZqKaua-tGjU5sq9KL-JMQmiq4rmvNI3_vMvyb9BN-m_5LpSN86yvNtoEKJKaKOPXIwwlfu21PaxIFqCGF38kjtGsKVa-xfznMFvwmwhPXx2UFJRdYq__ecHV52qbn7-wwIH2X8CAAD__xceKv8">