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

    <tr>
        <th>Summary</th>
        <td>
            [MLIR] crashed on `-scf-parallel-loop-collapsing` pass with assertion failure `use_empty() && "Cannot destroy a value that still has uses!"`
        </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 on commit: [#902614d2](https://github.com/llvm/llvm-project/commit/902614d2542d0aba4b6a5829eb7ea5dd8056fcb0)
Steps to reproduce:
```mlir-opt -scf-parallel-loop-collapsing test.mlir```

Minimized test case:
```
module {
  func.func @test_bitwise_and(%arg0: memref<13x21x3xi32>, %arg1: memref<13x21x1xi32>) {
    %alloc_4 = memref.alloc() : memref<13x21x3xi32>
    %c0_5 = arith.constant 0 : index
    %c13 = arith.constant 13 : index
    %c1 = arith.constant 1 : index
    scf.parallel (%arg2) = (%c0_5) to (%c13) step (%c1) {
      %c0_17 = arith.constant 0 : index
      %c21 = arith.constant 21 : index
      %c1_18 = arith.constant 1 : index
 scf.parallel (%arg3) = (%c0_17) to (%c21) step (%c1_18) {
        %c0_19 = arith.constant 0 : index
        %c3 = arith.constant 3 : index
 %c1_20 = arith.constant 1 : index
        scf.parallel (%arg4) = (%c0_19) to (%c3) step (%c1_20) {
          %2 = memref.load %arg0[%arg2, %arg3, %arg4] : memref<13x21x3xi32>
          memref.store %2, %alloc_4[%arg2, %arg3, %arg4] : memref<13x21x3xi32>
          scf.yield
        }
 scf.yield
      }
      scf.yield
    }
    memref.dealloc %alloc_4 : memref<13x21x3xi32>
    return 
 }
}
```

trace:
```
mlir-opt: /home/data/mlir/include/mlir/IR/UseDefLists.h:175: 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: ./mlir-opt /home/ty/scf_test.mlir -scf-parallel-loop-collapsing
 #0 0x000056014f9676ea llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (./mlir-opt+0x1a76ea)
 #1 0x000056014f964cfc SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f1942509980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #3 0x00007f1941601e87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #4 0x00007f19416037f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
 #5 0x00007f19415f33fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
 #6 0x00007f19415f3472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
 #7 0x00005601510d6b1d mlir::Block::~Block() (./mlir-opt+0x1916b1d)
 #8 0x00005601511783cc mlir::Region::~Region() (./mlir-opt+0x19b83cc)
 #9 0x000056015116b7ac mlir::Operation::~Operation() (./mlir-opt+0x19ab7ac)
#10 0x000056015116b915 mlir::Operation::erase() (./mlir-opt+0x19ab915)
#11 0x00005601503dbf73 mlir::collapseParallelLoops(mlir::scf::ParallelOp, llvm::ArrayRef<std::vector<unsigned int, std::allocator<unsigned int>>>) (./mlir-opt+0xc1bf73)
#12 0x00005601503b1a3f _ZN4llvm12function_refIFvPN4mlir9OperationEEE11callback_fnIZNS1_6detail4walkILNS1_9WalkOrderE1EZN12_GLOBAL__N_122ParallelLoopCollapsing14runOnOperationEvEUlNS1_3scf10ParallelOpEE_SD_vEENSt9enable_ifIXaantsrSt11disjunctionIJSt7is_sameIT1_S3_ESH_ISI_PNS1_6RegionEESH_ISI_PNS1_5BlockEEEE5valuesrSH_IT2_vE5valueESR_E4typeES3_OT0_EUlS3_E_EEvlS3_ ParallelLoopCollapsing.cpp:0:0
#13 0x000056015119169b mlir::detail::walk(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (./mlir-opt+0x19d169b)
#14 0x000056015119169b mlir::detail::walk(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (./mlir-opt+0x19d169b)
#15 0x000056015119169b mlir::detail::walk(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (./mlir-opt+0x19d169b)
#16 0x000056015119169b mlir::detail::walk(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (./mlir-opt+0x19d169b)
#17 0x00005601503b0fad (anonymous namespace)::ParallelLoopCollapsing::runOnOperation() ParallelLoopCollapsing.cpp:0:0
#18 0x0000560150ff3319 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (./mlir-opt+0x1833319)
#19 0x0000560150ff40a9 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (.constprop.489) Pass.cpp:0:0
#20 0x0000560150ff47dd mlir::PassManager::run(mlir::Operation*) (./mlir-opt+0x18347dd)
#21 0x0000560150fe658b performActions(llvm::raw_ostream&, bool, bool, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, bool, bool) (.constprop.273) MlirOptMain.cpp:0:0
#22 0x0000560150fe6c88 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, bool, bool, bool, bool, bool, bool, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, llvm::ThreadPool*) MlirOptMain.cpp:0:0
#23 0x0000560150fe708f 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>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool)::'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
#24 0x00005601510a83b0 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) (./mlir-opt+0x18e83b0)
#25 0x0000560150fe5446 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::PassPipelineCLParser const&, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool, bool) (./mlir-opt+0x1825446)
#26 0x0000560150fe74cb mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) (./mlir-opt+0x18274cb)
#27 0x000056014f934360 main (./mlir-opt+0x174360)
#28 0x00007f19415e4c87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#29 0x000056014f946dea _start (./mlir-opt+0x186dea)
Aborted (core dumped)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcWltz27iS_jX0C8oqXHh98IMsUzuasmOX5exs5YUFkqCECURwAdCx9mF_-ymAlETq4jhTOWdSk4pNEmx099fd6G4QplrzVc3YjRfcesHdFW3NWqqbW0bFF9ast-oql-X25oVpA2QNCrnZcOORKbD0mCQQh8gvsRfceTheG9Noj0w9PPfwfMXNus0nhdx4eC7E6-5y3Sj5JyuMh-c9Ozzf8Ql8XEKaUz8PaRDjhOURo0FZxjAIqyKHHk48eOfB6dKwRgMjgWKNkmVbMCvXvfJC2P3fCK6uZWPAtS6q64YqKgQT10LK5rqQQtBG83oFDNNmYmn3E3s-7vcDr_mG_x8rHR0oqD4jqXvcyLIVDHjRbfcMQNXWxcT-Ap4P7fws5-Yb1yyjdenh2MMBVSto7blhG8Uqj8wQecPojbxxgj2SengGOip0hgrtqZKhWOCmCCGLzAceueunTdyQE5uA92QO2RQwCxwPqrhZTwpZa0NrA6DjwOuSvY3pETlH7kbP058lP0eti2qy8yLYWw93aO76EauvHTFyN4CIfdaGNfuRE3vtoKLow1i7Kfis-vis_j3eDMUfg3weLznBi6IxYIxOAGcoPoN5jzr5AdTdpLNOPvVxJxzDD_v4sp_9U9zJGPepnzMMz8J2GPBwaQhJS7Bbjja19aG1W33kcOt7wd3Hlk_3r5egjVTMyd2x6hboT5ZmjbflTJRHPovuBlF1QnB4fYnJiKKHVDKHYZxtPqCpYqZVNdjFyI7z4eZcIjaKnkvyfertU72rTHi-lhvm4XlJDfXw3OV2POd1IdqSHQYWzx6ef9bsjlX3XBs9WXtkiqLAYbAkZOqR6eL5Mbfl6g9u1p81s5QemT02TNG6fNk2zEJzlP9_jrTPtsHtN27WYDCti769mMemf2dLKZmCqdZMGS5r4IWw1Sxjm8Zsd-xw6OEQeBjPaF1LA0qmjZJbQMErFS0DZk0N0IYLAdZUg1Yz7dm0gD0cgYpywcpJZ7mn-3S6TIFu8w03gIK8XdmaKpWxK-uHKzrXurWy5oDWJehNDsyagUJRvQY5Lb46T052dZwWX0HZbpq9a-HEg8mTkitFN4CqVbthtbFKgEnvO1fUD262Zpnrosr2lfz9ir_PTQQC-AYhhEEIkV8lYRQyChww5xO91d3Nk-K1caq-uCjE8YFI0W-Z1EYxunFumQFem85J8VBhD9_CN0StiH0XY3VARzr4RVWAJV_VVPxG61Iw5eG4Z9kN60nRWHNB97NnhHtGUYUSHwcwSWIIskwxl3kyZbq0OBc89_D8LQ6z0L8WvG7frld1271ozFoxWk60nMBOYZzEcKQvGYpBIUQsjoCiXNvkNs9bLkobKoLnxfXsv3__9iXfP-IJjqyrHAoPzyfWPnqrS9bYkGlr_tYNvDpt6tY-OtaTwiPTAI0B-0eakKhCgObSIf2YJqbsrOFmOSHxkZBgJCSoCKkoyDLqlmdml1KW049j7-btbzqRyVhkeCzSj_AHfFdYr4XOawT6ER55LRpEWYBgGeaoHGSfWyGLr30W6-53ieZMDCfIzh6xj0fsURSTohiwf2YrLuuef__wnoDczh8JSMYCwjyixSh7MkXNQcbh-T0x1HLZi7FrER6LSVBwWQxTdjfwvoQEBSMJw-UeQFLmVUQGEvosxZ763HUvpV0b8YFCF1WflHqSx8YmnUNCmipFt8-uAGtTdmOvrDBSeWTW1m6_V3ZJagb2FK6A0zNEtrqluz3GGZAFshBGGPEYY44oqUD25ZNvlUTYboisETPFqsX89emTbxkme-OmaYpQQYWwxSKr6sWXT0uUhSUzlAv_GxVfF_d2JPmDiq-PqmQqRemXTwhn_3X_eDu9z7JPGcJ4aMLZPvkjX7X1Y30Q9pp-FpYb0UWF4MGoaZot77LXNP20NAmraS5YxqvF_1BaG62WBqGS6z97KIvflybiOtN0wxYvKFuSLF3-li2Wi-zJKd8FfToaDNxKS9M0DVzV1sq-fcHZaz-QLp-z1DfbhqVLkj2-wCz9LCzrLE1f7Q04j_G0PlivkHFsJyhM8kHkdebt7q2NR0E3WE_TcbQNnemR2avkto--ODXp97SH93snXl5FpVV1FGH-PwhL8A_CEv6DsERHWQxWbosY01rW241sNajphunGNYTJOCeP12PfKI7yTl82fmQBj4osrCpCUHLBuI_Ni3xsnqjW05I2Lqv3KozsZgl6a1_2w-HNtKZiq7l-oDVdWWPOQC6lsNdxXblg5JhYlUdGTo4w-ZD-OKYn3jDBa3YUE5Z0r2r400EOJ1lRi1ob5TYrUp1wHRMMeoid7k9Usdos6koC94Wki2RnR_fcKNlM_Djpgkaf2QPYLQA8NmdUlkda7HCdDYijhXTJjZbt0I143NVULAziHDRMVVJtpm7t6u9smnY23l33jYleU8XKrDG2MzlwWMpWFexhpTyS7ix25OOH-8XzTNaGvZnvpZTDpHu54gUVz0y3woCT1TKMp12eGat-7DPsmiPwILh6bMwD5fV51-FjExZxDBolC6b1bVtVbh_4ngX3Fmtr_r8tO7HYA9tItd2xGtCXrKKtMFnJBDPs8py-DTz11feu_x6zHyjuOBWsMLbH0kZte3scpL64Te2T02b6IWeQI2dEMK7AJW3_Crz_nLMuh0yy_3I1aLZHag_s9MsE398TTD8a8n0u6Fh6OBJ0k5fUw9Gv5HscC1mv_i73naj0_WU5bvshjUkOB67TjeBmWpdPR1nz1w7OX8L236U4X-ZOewNmfTLqDYKjXBr4fgh-7Rwzzhe7Fm12_0SVZupCu_EzE8f3rIytEUdWDo8rll_kF63c96_Fmnad6lFztDSK16tnVn0c4EVFrR4jRaPx927ikxCCDeX1eQ6RfT9iEI8_jzK_iCOQZYLnRaYNVSbruX3og2yh292X6O7WvXR83MdZ4vvjHJSM9ffDklHQCb5gA0uxRzDNpTLMbSQLqZg7-mCDZnp3rnVV3pAyIQm9YjcojIjvY5IEV-ubCjGU4zjCFCaoKBMEUY5pVNLELzHMwyt-gyEmECGECAxJMKEx9SmDeRwHEOao8HzINpSLifX4RKrVlTu1uQmShOArQXMmtPt7EIxr9g24lx7GXnB3pW7ceU_errTnQ-FOzfZcDDfC_SGJbby94K478mEl6A6x3j-TCSFoqNbAHZPR_eFXRbloFfvJh2AhvGqVuPnrp1vOVP8KAAD__9Mpe7w">