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

    <tr>
        <th>Summary</th>
        <td>
            [MLIR]`--affine-data-copy-generate --ownership-based-buffer-deallocation=private-function-dynamic-ownership=true --verify-each=false` triggers Assertion failure `ownerBlock && "Use leaves the current parent region"'
        </td>
    </tr>

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

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

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

<pre>
    Test on commit: https://github.com/llvm/llvm-project/commit/1d070988d9172965dee227e5629fa886845b815f
steps to reproduce:
```
mlir-opt test.mlir --affine-data-copy-generate --ownership-based-buffer-deallocation=private-function-dynamic-ownership=true --verify-each=false
```
test case:
```
module {
  func.func @main(%N: i32) -> () {
    affine.for %i2 = 0 to 10 {
      %buffer = memref.alloca() : memref<10xi32>
      %value = arith.constant 42 : i32
      affine.store %value, %buffer[%i2] : memref<10xi32>
      affine.yield
    }
 return
  }
}
```
crash trace:
```
mlir-opt: /home/workdir/llvm-project-19/mlir/lib/Analysis/Liveness.cpp:45: auto (anonymous namespace)::BlockInfoBuilder::BlockInfoBuilder(Block *)::(anonymous class)::operator()(Value) const: Assertion `ownerBlock && "Use leaves the current parent region"' failed.
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 /home/workdir/test.mlir --affine-data-copy-generate --ownership-based-buffer-deallocation=private-function-dynamic-ownership=true --verify-each=false
 #0 0x0000644ade8e62b8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (./mlir-opt+0x10b62b8)
 #1 0x0000644ade8e3dde llvm::sys::RunSignalHandlers() (./mlir-opt+0x10b3dde)
 #2 0x0000644ade8e6cc8 SignalHandler(int) Signals.cpp:0:0
 #3 0x00007abc76f31520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00007abc76f859fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #5 0x00007abc76f31476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #6 0x00007abc76f177f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #7 0x00007abc76f1771b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
 #8 0x00007abc76f28e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
 #9 0x0000644ae1ca5ade void llvm::function_ref<void (mlir::Block*)>::callback_fn<buildBlockMapping(mlir::Operation*, llvm::DenseMap<mlir::Block*, (anonymous namespace)::BlockInfoBuilder, llvm::DenseMapInfo<mlir::Block*, void>, llvm::detail::DenseMapPair<mlir::Block*, (anonymous namespace)::BlockInfoBuilder>>&)::$_0>(long, mlir::Block*) Liveness.cpp:0:0
#10 0x0000644ae12a4a53 void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Block*)>, mlir::WalkOrder) (./mlir-opt+0x3a74a53)
#11 0x0000644ae12a4a7f void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Block*)>, mlir::WalkOrder) (./mlir-opt+0x3a74a7f)
#12 0x0000644ae1ca31f4 mlir::Liveness::build() (./mlir-opt+0x44731f4)
#13 0x0000644adee7575c mlir::bufferization::deallocateBuffersOwnershipBased(mlir::FunctionOpInterface, mlir::bufferization::DeallocationOptions) (./mlir-opt+0x164575c)
#14 0x0000644adee7d8d7 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
#15 0x0000644adea0efd7 mlir::WalkResult mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) (./mlir-opt+0x11defd7)
#16 0x0000644adee7d69b (anonymous namespace)::OwnershipBasedBufferDeallocationPass::runOnOperation() OwnershipBasedBufferDeallocation.cpp:0:0
#17 0x0000644ae1cdc64f mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (./mlir-opt+0x44ac64f)
#18 0x0000644ae1cdcdd2 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (./mlir-opt+0x44acdd2)
#19 0x0000644ae1cdf55e mlir::PassManager::run(mlir::Operation*) (./mlir-opt+0x44af55e)
#20 0x0000644ae1cd80ab performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#21 0x0000644ae1cd7d03 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
#22 0x0000644ae1d81465 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) (./mlir-opt+0x4551465)
#23 0x0000644ae1cd1962 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (./mlir-opt+0x44a1962)
#24 0x0000644ae1cd1c13 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (./mlir-opt+0x44a1c13)
#25 0x0000644ae1cd1e22 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (./mlir-opt+0x44a1e22)
#26 0x0000644ade8c54d7 main (./mlir-opt+0x10954d7)
#27 0x00007abc76f18d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#28 0x00007abc76f18e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#29 0x0000644ade8c5045 _start (./mlir-opt+0x1095045)
Aborted (core dumped)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzcWV1v27oZ_jXMDWGDor4vcuHENVagWYL2bLs0KPGVzUUmNZJK4_36gZIcfcRyjouerTtAa8cU-bzP-02RzBixkwC3KLxD4fqG1Xav9O2rMEzuyE2m-PH2NzAWK4lzdTgIi_wV3ltbGeSvEN0gutkJu6-zZa4OiG7K8uX0tai0-ifkFtFNt5RuPE5ikiYJT72YplHIASiNIYxoWrAkiZIgzBIvLBBZGQuVwVZhDZVWvM7BSSQrFJHuH1kdSqEXqrLYgrFL9wsvFqwohIQFZ5YtclUdFzuQoJkFvFio7xK02YtqkTEDfJHVRQF6wYGVpcqZFUoif11p8cIsLIpa5m5owY-SHUTeL0f-2uraIb6AFsVxASzfI39dsNLAhKTjhnNmzvFXvC4Bo_gOkRXGTt7SfWAUkAMTEtEE0fCvzubCp4imeIH8T7gZTt-WYdyqvCyUxoiGgmLkrzFxxvPIYBp2T1uVmxkHOGgolq3uJ1B_1Y0j_94jr06u_2kI8MLKGpr1TAu7X-ZKGsukxQHFJ6an6R0xY5WGt7WI3vdEXOA5yihcfyS7AzsKKHk3iOK1-0uDrbVsxtqR7nNg6lwzs8dWs0tx5AggutmrAyC6-a70Mxd6Es4LL0V041a4ByJDdLOSrDwaYRDdfBEvIMGYZV5VyF8FoYNktVXOaUwqeTyo2mDJDmAqx4Wmjo6_uitV_vxZFuquFiUHPTNKk2YII7p6WzpCzktmzNsjVbnIV7p1LqLJ31sHpLjxmiO3Mga0i3KMItIE-ElChGiEEaV_M4BLYC9gsN0DzmutQVpcseZLw85lDaWIxrhgogS-RGT19OXT6tsnbOrsICxmOKt3LpOVti4sr64gwpganIExkxwLmZc1h5ZO49iM5c-Nc53sb5blz5jXh6p1NVm2AfSk1U6zA2Z6Vx9AWscALztvNnXknPN_tdqCEfUJJq-EEBIFAeOQQESzBDeWa9xujqb940kLaRtz_NZEPk36SZp93ypjNbBD4-t7LKRtSgBNhkZB9I68eiRzMlwQtQy8CQOfczjH4Gstv4mdZOVfmOQlaHOqM-eFOJheCJ2qmecJHsEhmnSs2-FT4pHmf4vidygxy_I4KnwvpKStoV3-vibRNgoWpZD162In6_ZBvjRqGTXEAhpS0tMKxoBJmBY5ruxeA-PbZ1GW16GnUVrkPXo4pRvEEd6ZRr1raQdx1ANHY2Avjgsfs8yl5FWwNIkLv4eN38F62dWAXtYDJmNAmkAaXQfop5AOFE8HYQRezkLGAb8owQcBe8rHbdt9mqeIJk2d70vxqex-asdyVpau8mwLifz7zNXoZtoDqyohd6P1j00pbkrlyiVbL3oN0sADq5B_f07c_dWt4yy6mzArwanrtBqt5GCZKMcoT8wt_0k8nRk_NbXnrZMFW9KMJaVy9rvHZx2AJ232lO2uLpGRsykLWOi3zu6hhpp9Z-XzSKON0t-Z5p9t1zobOr_Hj9eG0Ei7f7Dy-VE33jtfHH0WO1XaqHaKeu8UjYs_jaJx0StKJ-nre0UwADzFQvurScILPSYIYre-R_dHPQbiMA7zAXrbxcW_u_7dGrXr6HDXPDSPp9Z95xr_yBKbzlSP1WdpQRdNPtxfxl8PdgyPlfs0sx0zChzfXptgog1PeDwx_lcwdWnn3Xl29oXImCuHxvJ2GCTLStgKB46o1wsWZqskbNVYqqPTG--xGttrGpX9k6_dRnQ1UzZOLLv3l3Z7-0ZSmK1hB5jR_30Id-Mj0A9n2WMFl7NzZOdhqnhj8Gnuflx9x0HaRu4w0p7YKYV0LR_lwM7JoD7HJTtknCEaj5i-91k65nvZqWNTXSpCv5yS0bh_zSw9kzHnWtxkGv5InTPtLxwVAEagmCsA_-Uu8UNl5brO4XncqdtXw2haDaM0-2ND6EdcFo_7G8-joJjxzmP1m3qsHIUVZ1Xjjo7JyJINx2khnK-cp_OLBybZrt0_ZkqV7ruWzQEhv_RuGATMUe7NnkwV4pxerdCTqKAUEiYh4qa-8Yx-uobDRU7UZ2msbg4LXJFdXZow6OAn7k_NEYnb8nbnLW1azxmRc9obcfLSwoswhInskzZnY2BaS2aEOtg3oZRMhCaEZbgCXSh9WOXdVuTiGcJbQzV7poFvK-veF_oV31Stc3jYuUJyMsrEjQ9fPn-9V9LCq31n8odS6MfKPjAh75UsxG6AkeLB0_d5Rr2JcjEn_qBefVE7kbPyo-3R3AJEkzfdayn-VcM73R_goPSxrQkjW3EoWF3aLYcSLMyv6V6YhlV26oG53dhZE_5eX_7h-vTs1oKVkFu3mTNWH98Hx6UAmH2L_CU880F4jl9zeOIFUThQ3FSlsCvJn7TKwZgT1_9J0P0fpsTFGcNn36wWcvcVitnhmVoahs5jfS31J-XGSyN6PpD_bGk412ucBXr7BFP75J4_a5-uOed71rbh1bVO-0i5edK51x-60HBKGui8U68h_aPsgA5MOt7vJnkYuM0_E3LmuD11E_rl05PchKdXHpTTlKekB0ymgBAQvN26NVtjmbbbE7lrREAwEJFOVSZBiFvwWaVJ0KXpKlPaQnN4lSsNzZUR8A78dD94w299nvopu4FbLw4I9fwkCG72t15IqE848bKM50ESR8TzgqAgKY0h5QnciFtKaEgopSQJAhIsw5QG1PMITYjPgyJCAYEDE-XSBcVS6d1Nc89169HED8KbkmVQmuZuntL2xpGicH2jb5vbsazeGRSQUhhregQrbNnc57ttFArXKCK_wr1VRLDVYrcDbQZXjgUTZa3hJ1w93tS6vP3xa8XO4i-39D8BAAD__3XeH1E">