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

    <tr>
        <th>Summary</th>
        <td>
            [MLIR] `BufferDeallocation` triggers a assertion failure: `other && other->block == block && "Expected other operation to have the same parent block."
        </td>
    </tr>

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

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

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

<pre>
    test commit: [8c7a2ce](https://github.com/llvm/llvm-project/commit/8c7a2ce01a77c96028fe2c8566f65c45ad9408d3)




step to reproduce:
```
mlir-opt test.mlir -ownership-based-buffer-deallocation
```
**Interestingly, the crash doesn't occur if I remove the extra branch jump statements in test.mlir!**
minimal test case:

```
module {
  memref.global "private" constant @__constant_3x3xf32_0 : memref<3x3xf32> = dense<-5.013000e+01> {alignment = 64 : i64}
  memref.global "private" constant @__constant_21x3xf32 : memref<21x3xf32> = dense<2.558000e+01> {alignment = 64 : i64}
 memref.global "private" constant @__constant_3x3xf32 : memref<3x3xf32> = dense<8.502000e+01> {alignment = 64 : i64}
  func.func @main() -> (memref<1x4x4x8xf32>, memref<3x3xf32>, memref<21x3xf32>, memref<3x3xf32>) {
 %cst = arith.constant dense<3599.60767> : tensor<1x4x4x8xf32>
    %0 = bufferization.to_memref %cst : tensor<1x4x4x8xf32> to memref<1x4x4x8xf32, strided<[?, ?, ?, ?], offset: ?>>
    %3 = memref.get_global @__constant_3x3xf32_0 : memref<3x3xf32>
    %alloc = memref.alloc() {alignment = 64 : i64} : memref<21x3xf32>
    cf.br ^bb2
  ^bb2:  // pred: ^bb0
    %alloc_0 = memref.alloc() {alignment = 64 : i64} : memref<3x3xf32>
    cf.br ^bb24
  ^bb24:  // 2 preds: ^bb13, ^bb23
 %alloc_1 = memref.alloc() {alignment = 64 : i64} : memref<1x4x4x8xf32>
 memref.copy %0, %alloc_1 : memref<1x4x4x8xf32, strided<[?, ?, ?, ?], offset: ?>> to memref<1x4x4x8xf32>
    return %alloc_1, %3, %alloc, %alloc_0 : memref<1x4x4x8xf32>, memref<3x3xf32>, memref<21x3xf32>, memref<3x3xf32>
 }
}
```

Crash backtrace:
```
mlir-opt: /home/workdir/llvm-project/mlir/lib/IR/Operation.cpp:389: bool mlir::Operation::isBeforeInBlock(Operation *): Assertion `other && other->block == block && "Expected other operation to have the same parent block."' 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/workdir/llvm-project/build/bin/mlir-opt -ownership-based-buffer-deallocation test.mlir
 #0 0x0000562e64f5cf78 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/workdir/llvm-project/build/bin/mlir-opt+0x1342f78)
 #1 0x0000562e64f5aa9e llvm::sys::RunSignalHandlers() (/home/workdir/llvm-project/build/bin/mlir-opt+0x1340a9e)
 #2 0x0000562e64f5d981 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #3 0x00007f6244708520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00007f624475c9fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #5 0x00007f6244708476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #6 0x00007f62446ee7f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #7 0x00007f62446ee71b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
 #8 0x00007f62446ffe96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
 #9 0x0000562e68353383 mlir::Operation::isBeforeInBlock(mlir::Operation*) (/home/workdir/llvm-project/build/bin/mlir-opt+0x4739383)
#10 0x0000562e65491cc6 void std::__final_insertion_sort<mlir::Value*, __gnu_cxx::__ops::_Iter_comp_iter<mlir::bufferization::ValueComparator>>(mlir::Value*, mlir::Value*, __gnu_cxx::__ops::_Iter_comp_iter<mlir::bufferization::ValueComparator>) (/home/workdir/llvm-project/build/bin/mlir-opt+0x1877cc6)
#11 0x0000562e6548f5f7 mlir::bufferization::DeallocationState::getMemrefsToRetain(mlir::Block*, mlir::Block*, mlir::ValueRange, llvm::SmallVectorImpl<mlir::Value>&) const (/home/workdir/llvm-project/build/bin/mlir-opt+0x18755f7)
#12 0x0000562e65515b33 llvm::FailureOr<mlir::Operation*> (anonymous namespace)::BufferDeallocation::handleOp<mlir::MemoryEffectOpInterface, mlir::RegionBranchOpInterface, mlir::CallOpInterface, mlir::BranchOpInterface, mlir::RegionBranchTerminatorOpInterface>(mlir::Operation*) OwnershipBasedBufferDeallocation.cpp:0:0
#13 0x0000562e65513f96 mlir::WalkResult llvm::function_ref<mlir::WalkResult (mlir::Block*)>::callback_fn<(anonymous namespace)::BufferDeallocation::deallocate(mlir::FunctionOpInterface)::$_0>(long, mlir::Block*) OwnershipBasedBufferDeallocation.cpp:0:0
#14 0x0000562e65511b4d mlir::WalkResult mlir::detail::walk<mlir::ForwardDominanceIterator<false>>(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Block*)>, mlir::WalkOrder) (/home/workdir/llvm-project/build/bin/mlir-opt+0x18f7b4d)
#15 0x0000562e6551089c mlir::bufferization::deallocateBuffersOwnershipBased(mlir::FunctionOpInterface, mlir::bufferization::DeallocationOptions) (/home/workdir/llvm-project/build/bin/mlir-opt+0x18f689c)
#16 0x0000562e65518aa7 mlir::WalkResult llvm::function_ref<mlir::WalkResult (mlir::Operation*)>::callback_fn<std::enable_if<!llvm::is_one_of<mlir::func::FuncOp, mlir::Operation*, mlir::Region*, mlir::Block*>::value && std::is_same<mlir::WalkResult, mlir::WalkResult>::value, mlir::WalkResult>::type mlir::detail::walk<(mlir::WalkOrder)1, mlir::ForwardIterator, (anonymous namespace)::OwnershipBasedBufferDeallocationPass::runOnOperation()::'lambda'(mlir::func::FuncOp), mlir::func::FuncOp, mlir::WalkResult>(mlir::Operation*, (anonymous namespace)::OwnershipBasedBufferDeallocationPass::runOnOperation()::'lambda'(mlir::func::FuncOp)&&)::'lambda'(mlir::Operation*)>(long, mlir::Operation*) OwnershipBasedBufferDeallocation.cpp:0:0
#17 0x0000562e6508f157 mlir::WalkResult mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) (/home/workdir/llvm-project/build/bin/mlir-opt+0x1475157)
#18 0x0000562e6551886b (anonymous namespace)::OwnershipBasedBufferDeallocationPass::runOnOperation() OwnershipBasedBufferDeallocation.cpp:0:0
#19 0x0000562e681b3373 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/home/workdir/llvm-project/build/bin/mlir-opt+0x4599373)
#20 0x0000562e681b3c12 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/home/workdir/llvm-project/build/bin/mlir-opt+0x4599c12)
#21 0x0000562e681b63ee mlir::PassManager::run(mlir::Operation*) (/home/workdir/llvm-project/build/bin/mlir-opt+0x459c3ee)
#22 0x0000562e681ae96b performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#23 0x0000562e681ae5c4 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
#24 0x0000562e6825a9e5 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) (/home/workdir/llvm-project/build/bin/mlir-opt+0x46409e5)
#25 0x0000562e681a77b2 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/home/workdir/llvm-project/build/bin/mlir-opt+0x458d7b2)
#26 0x0000562e681a7a68 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/home/workdir/llvm-project/build/bin/mlir-opt+0x458da68)
#27 0x0000562e681a7c82 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/home/workdir/llvm-project/build/bin/mlir-opt+0x458dc82)
#28 0x0000562e64f3c4ef main (/home/workdir/llvm-project/build/bin/mlir-opt+0x13224ef)
#29 0x00007f62446efd90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#30 0x00007f62446efe40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#31 0x0000562e64f3c045 _start (/home/workdir/llvm-project/build/bin/mlir-opt+0x1322045)
Aborted (core dumped)
```


</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzcWltv2zgW_jXKCxFDou4PeXCcGhtgggRpMfsoUNSRzYlEakmqdfbXL0jJ1iV2Umfc2dktUl9o6vA7t-8cUiJKsQ0HuHHCWye8uyKt3gp5o34AkOIqF8XrjQalERV1zbTjL5ET3iY0JpiCE945ONlq3SjHXzp47eD1hultmy-oqB28rqrv-7frRoo_gGoHr3tReN2LcT0SxzSNXJyUgGkSRlEZhTQISZEGblL4Dk4ddzn-UxoapAWS0EhRtBTM-u7Sidz-z13WFZPXotHIwF-Yb-ha_OAg1ZY11zlRUFznbVmCvC6AVJWgRDPBZ1IcbP7uuQYJSjO-qV4dvEJ6C4hKoraoEKC4g2ONBKWtRKxE90hCLb6DnQU7LQnKJeF0i_5o6wYpTTTUwLVCjA_oHOx1ixnsjLOaVKizPFF79WYaiqKtADnxreMuEaqhllAuNpXISYUcjBvJvhMNDsaICq404Ro5gZtl-2-Zv_N3pY8zFxnHdgIcf9UPO_4X5Ph3qABuEKyuw4Xr-a7rgoNvXc_-HN-Sim24UcfOjQIrikWBE999Fhb2OgBTVPvROSy8CMPkTFSft9VPWSpZhC4-11Bly-nCvJiFa8K4gxMHp-jaXo-Tw6LeLtgFu6Rf2ITjETyT4ZHpTk5P94Hk4JCqDiSRTG8XB4Ps1fPDNF1EbhzFneJLpIErId9iM3ohI9G18rp8Y_-2mbbQIuuQDEuelGSS_agB8AopLVkBheOvDIf5azP29s1w1QqJslTQ0Zi_NgjHIH0Lch8boLN9fJyXNINASytjoXag9-v7IXEy9nvptFzkEjnhlzzHdqj_6JuPlolRI41Rlt0v7gxV5l4C1xulx7CCEa5gDAxbaOqAzfOtk-xEvw_BDqR3CZBvY7IXSEXzaoPTLj9e88TVfz7YTsbxwYISdCv5CE4Pzh-DnAB231X3MvRgnGJ5qn8dl0h3ubKlMCf0RUvyXjG2tsDrrajBwesfQr4UpvLNO4SuHq4rljt4ff_s4PVjA7JjDdo0jr_0k9TIyoWokJ3tLx1_eZjVfWXqFkoh4Z7fVoK-ODg5TEC21loZS6VAdmORK_QWJHJw5OAI2S-GfnNzuQkzS2Ldl26Kg_GXXQNUQ9FNR-KwhBZoS_o2QJEaUEOkCVcrYOFg7OAYlYRVUCwcd_n025fl1y9ItXnNNCIobzemvxFSW0nndllMqRaUSTfCC8Q4rdoCRo3LwVtm7a-a0BdUtHXT-c5dIPvvSYqNJDUictPaluUnHZi3rCrMu6li60Mr9jMN2Kgjskzgu8jdua7rhhGGKChDWsYJsjpbJ6tX1X14koxrq8g3G4Q4GSZJ8iMTSksgtXXcCjGuLY8YOvmkOqa47zw_wGWcdC2qgevN4BKSwjG4zy3_yjacVP8gvKhAqj2zXQCRS1IYEOEZoiJNPDRZ28GJtccKKbZhvBSZtvmxQt8FK7pU6a9QfQK69n-3gN8vEJcRDoLYTULs9np0KbxLoiwKrivG2931hrfdD3ShxCKymAMcYndAHEwFhjQtKWr0VgIpshdWVedJT6O0pIP0cA43iCO0UVa9c2EHcTQIjiaCI4C49BHJTQafJRYncekPYuM3Yr38bIFePghMpgLLEtLoPIF-CulI8XQcYYkf-n7in0PLx6Z2QfensyGI_dRP9ltI7HsTOgmD1KM0smGOlC46EFlWMk6qjPG-MmRKSO34qwHn76Rqoc-RLNvwNqO73f5q0fQ5nt1rkBkVdZMxDXIiYdILj4SuRN0QSbRpgm17OjbPeNm_HsxF2CmJY0qjwR_e1B9JGZYxehfZ3ahafDWb6W54A_rBdi7qm3gG3W2gBkF9rM1Md3zU6v5M-AbM-EDeX2tSVb8D1ULe1011JCKMlYxy3S7yIuYKwzIezDUh8zD0wtz3RwjXhFWthMepeydZ1e0mCRf8tRatQpzUoBpbMdPeKNbmYzN341tbLR6biewHqIV8_VKWQPVjY09KSitsbNBn2DDBb-0pyMlJK1JVJ3_84NrxAt9A1oyboB1Pn2XSnGge953JrWlM3lpgVvaMK_yZK_wyjUaQ_kmql2dQbaVH_jH7e8soXYd9dPaJsE0tH5gxSqrKtG9Zyc0-5HPOPPRcMFlv3QOcWLoX5eAgcztDVoJvTmXSp4wZzIzp5UFx3JjDYGGyvOo-_yDVy8SgayF_EFncCRMLnIJhv47IViWpFBxh12lMrC7otomlzDWPsjBt10UItYzzoBgYIpxZ0k1S-j6hDqHQuUpN_fdxfKx-nrAfG_OqLqV6lKR0UD2aqZ4QEl88I2fMcSIrD80EcJJXkLHSpqo3LMxUJjhkYrqqgTNY-rGZGnceoXMCPF3f9ii_mzK1370eQDKVmR3qCf3fhm8_PhH64Sz92sD72Tux8zhNvKnwPrcPKW1PQ95lwY8Y6Ymovk2SLX_kIzsnI_qLK1LnBXFwPEH61mfpFO_7Tp2a6j1C-tspGXXdzgeXHsmYYxXkAiU5nhCAm5ReeIIAzqsiQ_H4ZRXjmJF-YdUI4tALR31lMqfOJMp_bbx9xr_TjaaX-37sn3DlY_NNPDYGwrIgjfVdj2RidotxzpqnaXbJSfWqmHognGzAMk8uRGXeW27vpBYXO1oKwjT142Hrit259tTDZ2v_xBqoGIdZ8JmpB6Wii5tjfJFZ6p4rLe2RoqHv5XsTRo3EHvuTPUi956Xo9lkXOywI05R6eLC4N7N45APMgO5VPxpdlz_OCFPqAwwI8RQhgTTKUQOyFLJe0r7Xevck9NAEqC2RUGSNNj3yaNMrWknhYWPIb2_uWYA8_Hb_vBJcw06_ceZDxeRjox8I4yvBS7YZyUjR6Ne36Y79uXIhDUYc-5vYMEqqj1q6Uxc4ODno3nL2rxbe6N5tbjtqmtiqgJK0lc4KqEDD6Wv6Tca4Msw9cKqDPGrCn_XlL9dnQHfHSAVUmwZUafn6NjjeC4CTG8u_hWc-CM_JnjXBIUkhHCmumorpJS-epKCg1B7rfyXo_gdT4t0Zk1M5LRnfPEN5cvgSxBsFbgrhQLzhjJviOMfHo_7_LWcvUcWSIs5HdTaaG5NEyUlj9g0F3RLZPzF1Zjh8ZIkLaUiiZNAwnmtIk9Phco6Gf4kqNBk5K5neT_RpACWqCeOXuHeJcWAztl8rnd37Kov0zFuLOC1S9yDwcDf5IBACF2WZuSZTmkidjTT56SUgGC3hze3jBiHqhF_GQm7Q89AyF1JDYaRSIcHewIf9UeD0EY2r4sYvUj8lV3DjxUEYpl6cuFfbm8QLy7BIPS-lcZEkoQ9egt2S-lEYl0DLK3aDXRy6AQ69wI-8dOESt0hJRPI0j8Mypk7gQk1YtTBaLITcXNlnD248P_YDfFWRHCplny_FuHuyAzvh3ZW8sVrn7UY5gVsxpdUgQTNd2WdSTWvphHfIidwjJ9mRi7Rkmw1IhQgihyc5yu42iH1a4S9-qOOqldXN55_W6I32_Qb_JwAA__-G-1W5">