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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] --affine-loop-coalescing crashed with assertion failure "Cannot destroy a value that still has uses!"
        </td>
    </tr>

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

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

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

<pre>
    git version: 5bd643e1456bd2acc53ac0bf594d285be89a44fe

system: Ubuntu 20.04.6 LTS (Focal Fossa)

reproduced with: ```mlir-opt --affine-loop-coalescing a.mlir```

a.mlir:
```
func.func private @func2() {
  %c209092661_i64 = arith.constant 209092661 : i64
  %c0 = arith.constant 0 : index
  %c1 = arith.constant 1 : index
  %c3 = arith.constant 3 : index
  %c16 = arith.constant 16 : index
  %c19 = arith.constant 19 : index
  %c29 = arith.constant 29 : index
  %12 = tensor.empty() : tensor<20x5x5xi1>
  %17 = index.shrs %c1, %c0
 memref.alloca_scope  {
    %131 = index.or %c3, %c29
    %c0_60 = arith.constant 0 : index
    %148 = index.casts %c209092661_i64 : i64 to index
    %151 = tensor.empty() : tensor<20x5x5xi1>
    %152 = tensor.empty() : tensor<1x1xi32>
    %c1_65 = arith.constant 1 : index
 %c0_69 = arith.constant 0 : index
    %c1_70 = arith.constant 1 : index
    %153 = scf.for %arg0 = %c0_69 to %c0_60 step %17 iter_args(%arg1 = %151) -> (tensor<20x5x5xi1>) {
      %158 = scf.for %arg2 = %c0_69 to %c19 step %148 iter_args(%arg3 = %12) -> (tensor<20x5x5xi1>) {
 %extracted = tensor.extract %152[%arg0, %c1_65] : tensor<1x1xi32>
 %159 = arith.index_cast %extracted : i32 to index
        %extracted_slice = tensor.extract_slice %151[%arg0, %arg2, %c0_69] [%131, %159, %17] [%c0_60, %131, %c0_60] : tensor<20x5x5xi1> to tensor<?x?x?xi1>
 %inserted_slice = tensor.insert_slice %extracted_slice into %arg3[%148, %c16, %131] [%c1_70, %17, %148] [%c0_60, %c1_70, %c1_70] : tensor<?x?x?xi1> into tensor<20x5x5xi1>
        scf.yield %inserted_slice : tensor<20x5x5xi1>
      }
      scf.yield %151 : tensor<20x5x5xi1>
 }
  }
  return
}
```


trace:
```
mlir-opt: /data/bin/llvm-project/mlir/include/mlir/IR/UseDefLists.h:198: mlir::IRObjectWithUseList<OperandType>::~IRObjectWithUseList() [with OperandType = mlir::OpOperand]: Assertion `use_empty() && "Cannot destroy a value that still has uses!"' 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/bin/llvm-project/build/bin/mlir-opt --affine-loop-coalescing a.mlir
 #0 0x0000558a73df622f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/bin/llvm-project/build/bin/mlir-opt+0x161922f)
 #1 0x0000558a73df3284 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f3408c57420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #3 0x00007f340874200b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
 #4 0x00007f3408721859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
 #5 0x00007f3408721729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
 #6 0x00007f3408732fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
 #7 0x0000558a76b3d537 mlir::Block::~Block() (/data/bin/llvm-project/build/bin/mlir-opt+0x4360537)
 #8 0x0000558a76c287ca mlir::Region::~Region() (/data/bin/llvm-project/build/bin/mlir-opt+0x444b7ca)
 #9 0x0000558a76c14d2c mlir::Operation::~Operation() (/data/bin/llvm-project/build/bin/mlir-opt+0x4437d2c)
#10 0x0000558a76c14eed mlir::Operation::erase() (/data/bin/llvm-project/build/bin/mlir-opt+0x4437eed)
#11 0x0000558a754fbee1 mlir::coalesceLoops(llvm::MutableArrayRef<mlir::scf::ForOp>) (/data/bin/llvm-project/build/bin/mlir-opt+0x2d1eee1)
#12 0x0000558a73f1c016 mlir::LogicalResult mlir::affine::coalescePerfectlyNestedLoops<mlir::scf::ForOp>(mlir::scf::ForOp) (/data/bin/llvm-project/build/bin/mlir-opt+0x173f016)
#13 0x0000558a73f1c632 void llvm::function_ref<void (mlir::Operation*)>::callback_fn<(anonymous namespace)::LoopCoalescingPass::runOnOperation()::'lambda'(mlir::Operation*)>(long, mlir::Operation*) LoopCoalescing.cpp:0:0
#14 0x0000558a73f1b7f0 void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (.constprop.1) LoopCoalescing.cpp:0:0
#15 0x0000558a73f1b84c void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (.constprop.1) LoopCoalescing.cpp:0:0
#16 0x0000558a73f1c954 (anonymous namespace)::LoopCoalescingPass::runOnOperation() LoopCoalescing.cpp:0:0
#17 0x0000558a76a09aee mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/bin/llvm-project/build/bin/mlir-opt+0x422caee)
#18 0x0000558a76a09fca mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/bin/llvm-project/build/bin/mlir-opt+0x422cfca)
#19 0x0000558a76a0a9cc mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::'lambda'(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&)::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const Pass.cpp:0:0
#20 0x0000558a76a09125 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) (/data/bin/llvm-project/build/bin/mlir-opt+0x422c125)
#21 0x0000558a76a0988a mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/bin/llvm-project/build/bin/mlir-opt+0x422c88a)
#22 0x0000558a76a09fca mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/bin/llvm-project/build/bin/mlir-opt+0x422cfca)
#23 0x0000558a76a0a7f4 mlir::PassManager::run(mlir::Operation*) (/data/bin/llvm-project/build/bin/mlir-opt+0x422d7f4)
#24 0x0000558a769fb563 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#25 0x0000558a769fca34 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
#26 0x0000558a769fcbe4 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
#27 0x0000558a76afbed4 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) (/data/bin/llvm-project/build/bin/mlir-opt+0x431eed4)
#28 0x0000558a769f5447 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/bin/llvm-project/build/bin/mlir-opt+0x4218447)
#29 0x0000558a769fcd31 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/bin/llvm-project/build/bin/mlir-opt+0x421fd31)
#30 0x0000558a769fd196 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/bin/llvm-project/build/bin/mlir-opt+0x4220196)
#31 0x0000558a73d2d97b main (/data/bin/llvm-project/build/bin/mlir-opt+0x155097b)
#32 0x00007f3408723083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#33 0x0000558a73dc658e _start (/data/bin/llvm-project/build/bin/mlir-opt+0x15e958e)
Aborted (core dumped)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWk1z2zjS_jX0BWUVAfDz4IMiR_W6yn7tsjM1RxUINCVsKIILgIl02d--BZKSSJqKldg7O7O7U2OFIhqNp59uNBqAmDFyXQLceOEnL7y9YrXdKH3DSlXut6o2D4uXq0yJ_c1aWvQNtJGq9OgchZmIAgo4CKNMEMZ5SBn3szxMA0GSMIMkZUGQg-ffev68_TR7Y2Hrev-W1aWtEfFnfjCL0P2XF-SRZKk4K9BSGcM8kvZ7aqi0EjUHgb5Lu3EqvMhv_98WUl-ryqLra5bnsoTrQqnqmitWgOGyXCM2czLHDn3FXRPtvo5k8rrkM_eBKi2_MQvIC3z3nXgk8UiKvPhTK4mQR0JO_NRPSRThlYwC5NFbxLS0mxlXpbGstOgogJwJMgr6vf2pHn4rWQrY9WXxlCyelqVTsvSM3mhScXRGOp2UTqelyaQ0mZbGpBG2UBqlZ7Ct7P7AOZ13rz26IP4u3IU7iT36ud87bno3Smdmo00L1yOLlulOdAtbDfmMFYXibGW4qgD1fdrqorinTOmW04OqQ5x2wtxfRZf6sdUeJD3tnBlrJkOpiRZk1ZSKEP8yV52Cy8jGO7yTlIy7c7yKwsvisWNoMhDOMcTxKp6kdCLcO3PaiDc8n-Wtv5hetyqOAKw6uctYqLqokRb0ium1aex3_fChHw6xY-Tao59dspqmdZgTjoCSCUBkEhBOT3CCZAIPPeIhPwnHIyHsrGbcghj4u33ZRYJbB1rCDiHu3OuFt2_EQtO779jGMSsX0eOR50hSMhHLHV1H0ZUpJIcJqIeG1iljwI7b40xfRWmDvRHC9JACcJgenuJTexMOh_cU95T4rwjo8-xsOTZ4dLk7_PXnmkdCWRrQk4a1LSe7xhzIso0PFwCdLUFydFDUw3wyxs2bk5HdQ5BMm9uXbp_HBr-yqwX1Rnpx_7m430soxCQHb2Yol5Jv-18H-trs92Mlvf69Rw221mW38B9eT1YJ7afzCJwrFQ5VSFOakKVglnlkmcnSI8ui-La9rrT6G3DrkWVTcZClLHlRCzi9uHv2yPI3A7eQ30tjzczVOThNnMpDlULnd8-PmVP0u7Sb3ww4SY8uHivQrBRf9hU4sxvJf0yJdmk9_OTqKNTr1kTjaZjHqmvzwlsHYG6c26QqXeFVG1gNVgkSeSRCHiELVpbKIgHGarVHDH1jRQ3IbphFxsqiQBtmUG3AeAR7hHgkRjmTBYhZy-PT_ef5y2dk6mwrLWIoq9dIQ6W0dZNsY21lHECy9MhyLe2mzmZcbTuSX3MtjandWEvESoE6ypHdAOKamQ3KGP_a-LUb_sUy_hWJelsdHe3P2qh70mqt2RYxva63UFpzgauzWhbi2HhxpXpIGNRH_s73fT8MExZTkUeE5KixtHGS2Zv24UnL0jbYvzRBSpKTkGbfV8pYDWzb-Gnh5m3rteSX4Hvkk7_DEU4JyY91ukOLR2gpSQL0ItclK_6PlaIA7ZGkG7x9bWa8ckz7zd9REekUxTkN_ISHcUB8tFppMFZpWGnbYS9k5pHlLolWUXBdyLLeXa_Lum2o7EYDEzOjZn6LOAiIP8BLB8O4QfwMaSYNXKCfO81Rozmgvp8NNAdDzQQnYYpYpi5C3tNMSOIWqp7mcKw5PnryYp0xGeqMhjopyUX0czopzUU00Bn3YyHKqAhp3EsvnwrFv3Zpqn0-ZJJ3xGRAIz-k8QBHMsDBSRJz1sPxDOt2Q-uAdF8-AkkQZDFnAyTpEAkOBOGDhAua2ROY0_cPwUNjQfhpV00o9sd4AMR5PKCZgY-CAiAGUAaJIwzyDAD3oHQJEu6Vqswgtz3UlmUFzLVm-2fIPbo49TI8bx-WSj9Wh2r4PdCJwACAB9DJIOflmPs46kG_V2vJWfEMpi5s732b_4fmPYHOgdti__9gLIjW2jcsSs62vjvBxzT3cTQwlo6NjShB35QUvTUpr0vuwmalG380rQOcvcCeO-2HcoWzonDL8SovXbVJkuMZFCrZFkzVLGzpgVdVLY7r5hMz3UKo6_KxHE2dtsUjccG2mWAeid_CQ5JClWu3VJ4VQ0MEr9cxx1cw4iuLc7_l66RXgGWyaJ-_s-LrwONLpb8zLe6sG9tVt59_AH3xTi8MzP2dFV8ftXBLdhNI7ba70qqa4UvND8fmJwH_LzI_Gs-WNAzQB8b1RSCG6zDzUwZwhv7H6ot6rNyYc8Gqhu9u6AF1DaiW8POuOLXMS1bsjTQPrGRrx-cCZUoV7t-6bM6exYcUpAEhnAEM8lUyNj4fLP6XGf8kKyhcsh7GjxM92hR9OBv9Tm6ou9JY3ew7lH6ldSjQW7UP2J-YhtLelblCTSB3OezdhOe9GscRno4IZynnP014L9DnZl_yu21VeCRpeXorm3_cEI_V04NjrPFu905VXSZqF5Y_YuDWYcgpm5zhxB8HOSbhB3P-_kDBJOwHCsFj0Eny8zPzr5KWkmQwSwj5X1r6Q9MSoeO0FOfBCOfB8snYGtd-7wUo4jwYABwUilGaZ2FEUQU6V3o7byoZ88aZjrGi2wZsmAaxqqz26OLU40XVmsPD2hVRB7JH4fFwf_e8UKWFnX3lyodC6sfKPjBZLlSZy3VPR4p6rdM5KhzZxxkNUKUVB2M-1XnenAxdZF5dyr_X8Mq8B9gqvT-o6skLyFld2JWAAiyc7-N2IZ8vt7kvdytZAdw-w1oaq_dd-2mcL81B1FMzn-YX0RWN6cogOLupPFv1nuvgkeSPo_O8U8_t_CYd8CcMj2m3XzhlJquYP41XTvvfPwWktyfMaJeTZyD6E8ZUhbTzUjyNMs6_w7q_4CT9ocSpUviYYpFiADFcHZNROgyDIJ6eaP9paeK9lQZOgiAecJmOlxZB8Vkuu5KPb1hb3I1OWV6sluX6GfIfvP4xEe83MBd0cCA7vDKL0lzgNPoQA__FlhAfp4PT1vF1GhFpnKEtk-U7D3bD0E_jbDAUGd0qUT-haLUqZMZXxjJtV71xL71nCvyEDkYZHh8LHoUJoFb_e02CNExOZz_zTOnmpyYk4UpDc5_bv3I4XN1fiRsqUpqyK7jBsY-xT3GIrzY3eR5llMQRTkMRspimPBAi58QJxUDhSt4Qn1CMSYwjmmI8yzmnIYXUDzjDXGAv8GHLZDFzVsyUXl81V9E3MQ0D_6pgGRSm-c0lIe31P_HC2yt90xid1WvjBX7R_ArgqMBKWzS_02w6hLfnr5Gbu-3ut5KIHW_ucyaLWsOv3NNf1bq4-fXb98bqfwYAAP__h5ittA">