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

    <tr>
        <th>Summary</th>
        <td>
            [mlir](canonicalize) mlir-opt crashes at PatternMatch.cpp:156 with assertion `op->use_empty() && "expected 'op' to have no uses"' failed.
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          Aran-414
      </td>
    </tr>
</table>

<pre>
    git version: 2e87cf8c2b8ec6453ccfa7e448d5b33f1d71a2ca

MLIR Program:
```mlir
module {
  test.graph_region {
    %0 = builtin.unrealized_conversion_cast %0 : i32 to i32
    "test.return"() : () -> ()
  }
}
```

Reproduce Command: `mlir-opt -canonicalize a.mlir`

StackTrace:
```
mlir-opt: /data2/dependency/dev/llvm-project/mlir/lib/IR/PatternMatch.cpp:156: virtual void mlir::RewriterBase::eraseOp(mlir::Operation*): Assertion `op->use_empty() && "expected 'op' to have no uses"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace and instructions to reproduce the bug.
Stack dump:
0. Program arguments: /data2/dependency/dev/llvm-project/build/bin/mlir-opt -canonicalize a.mlir
 #0 0x0000561d98b9a1cf llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0x25c71cf)
 #1 0x0000561d98b9699c llvm::sys::RunSignalHandlers() (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0x25c399c)
 #2 0x0000561d98b96b37 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #3 0x00007f2c63e96420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #4 0x00007f2c6398100b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
 #5 0x00007f2c63960859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
 #6 0x00007f2c63960729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
 #7 0x00007f2c63971fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
 #8 0x0000561da1d4d486 mlir::RewriterBase::eraseOp(mlir::Operation*) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0xb77a486)
 #9 0x0000561da1d4a5eb mlir::RewriterBase::replaceOp(mlir::Operation*, mlir::ValueRange) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0xb7775eb)
#10 0x0000561da1917b89 (anonymous namespace)::GreedyPatternRewriteDriver::processWorklist() GreedyPatternRewriteDriver.cpp:0:0
#11 0x0000561da191ae66 mlir::applyPatternsGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0xb347e66)
#12 0x0000561da18674d2 (anonymous namespace)::Canonicalizer::runOnOperation() Canonicalizer.cpp:0:0
#13 0x0000561da19b75e1 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0xb3e45e1)
#14 0x0000561da19b7970 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0xb3e4970)
#15 0x0000561da19b9a24 mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0xb3e6a24)
#16 0x0000561da19baab1 mlir::PassManager::run(mlir::Operation*) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0xb3e7ab1)
#17 0x0000561d98c6022b performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#18 0x0000561d98c60cd3 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, mlir::SourceMgrDiagnosticVerifierHandler*, llvm::ThreadPoolInterface*) MlirOptMain.cpp:0:0
#19 0x0000561d98c60f5b llvm::LogicalResult llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef const&, 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::MemoryBufferRef, llvm::raw_ostream&)>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef const&, llvm::raw_ostream&) MlirOptMain.cpp:0:0
#20 0x0000561da1d92535 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::MemoryBufferRef const&, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0xb7bf535)
#21 0x0000561d98c57064 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (.part.0) MlirOptMain.cpp:0:0
#22 0x0000561d98c61477 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0x268e477)
#23 0x0000561d98c616b3 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0x268e6b3)
#24 0x0000561d98ac6b8c main (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0x24f3b8c)
#25 0x00007f2c63962083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#26 0x0000561d98b768de _start (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0x25a38de)
Aborted (core dumped)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzcWV1v2zrS_jXKDRFDIvV54QvVad63QIMGSXH20hiRI5lbmdSSVJqcX7-gJNuykzTprnu2OIBbO-Jw5pnnGX6IBGtloxCXQfIhSK4uoHcbbZalAXUZR_FFpcXTspGOPKCxUquAlYRinvE657TKkadxwjivIcM4zkVSMVZHIouAcgjCMgjLm8-f7sit0Y2BbcD8kyANx8-2lSYIy60WfYskyD4EYUmIQ-sWjYFuszbYSK32LYQENAlJwK5I1cvWSbXolUFo5Z8o1lyrCeSag3U725JIRonT_mvvhQ5BDLreqIDSgOYBLQbj6edlwD5Ov4dOQXblkY__7_CPCd5hZ7ToOZKV3m5BicHNmN2l7hy55KC0knzASWAxpL3rfe-Af_tqgOMJOZ6YycOI61qAA-q_sUMlUPGn4Y-HgF637cP2sjP6n8hdQK-HCPS6lVVArz_dBfT6FpxDo27A8c2Cd13AyihJveMHaVwPLXnQUpChIysDVt7hdyMdmg9gcXyCBix-6QKaH6y-dGjA-bqgpaeKlaS0Fo0bZEtD3Xkie4tr3HbuacczTQOaehnwsUPuUJCAZroLaOaF2sADEqVJb9EO4mSkBtmiWARhefv5Y3n_kdi-2kpHgFR9Qwx22rihq3Od9dDodUCvG-k2fbXgejtR9JwpaW3vo1wTUIJIxdteIHEbJNyA3ZAK-Dfn1ZnarTM999lZH87spfc9qr5Z7BQlot92o6LhYlf-BEzTb1E5-9OK-noX_luqSd_XSyv0vllIwscwDMMkjUSRVwVEvCYDCYNy9smOP26NVG5WhTQ_GBn4vtbWGYTtoNmKSOVGBfMzwA_oh_CRJjyLeD0NtICy6AR4WhT8JeB3vbqXjYL2_0GJFo3dV9c5sbGi4Ads9BRbxTJyhCKg-cDRiljZSFXrtRvGxmoYYOMwmXrYaSCGw78xAJsCZDXlKcMijWlI1muD1mmDa-Om9Mah_Zin6zS-bKXqHy8b1Y8NndsYBLGwehEOaURxTMNDEvFRjCKPwrAiBqTFdzjn3m06uI1ZGFYHt8mx2zTMk4JApd-FeeaW0jwpDm7TU7fZXuN3O8zozGF27DCLapH-nEPGapEeHOazooBIxCLO0_92Jj1nFVdZBnE-A1ycAIYEqx8CNti1wH8MeTXz8Ae0Pd6BavD8qWQJTkXn54rwKJUiyqp8COinxaet7i1RsEXbDTNbMaL7P4MonqYVcUr2ysgHnNB3RnO09h_afGulddO08nqvk2HsYUUnsADTeUlA17U7V3ZwLNunI27vhp3PNOkeHl8b_Sfuok8O7tERrpUHemI9Qp6sV1rVsvEGldbtL6gyFmeYpgdp6BEHeZrFgr4lzWq2nE1JmF59UbNSG8Q4snuBf3bMf5UlGM2IEehAtrsq_qq_dLdgbSmgc_oQ9kgQb_Cszl8fAaWC9slKewMKGr8q7GhfkV4NW27xC9bSimGcYHTQID7locjCn-bhVnbYSoUng9-b7tNLz07MvJMP9WnYe_ndkzbPvB4bjJHHhgn7LRhU7pOq9W6snL_-MS6y8MB9csJ9ATQ-gbwjYc802GHP-65J9hmT504nBRof0klP0gGoojfS-csWOIYZVLOyz462aTwNKa1Ih6bWZluO2_c39rnWiWm7uQGDYt05E7DVoce97g3Hm8b498SXZ1__4rvSyuGje6bdTSvNl87dgFTjvDzzUZBZ6wtzW36aHBeMTGvWh76uhz3ou3LrlfxXj89yu8GtNk87VzN7gTX0rVsLbNHh633YR_-hK_Jy-x3W72djbncloUXu_NponXl61r4X5UpCo7R1kv-BRtYSzX53Xh7j-jpslW-1bj8ph6YeFqPybRGKUxHqpJq5_awbvzrdoe1bN3te92oov7XB-oi_4w4BzX8DkY5UeL2gisGVb-HQtv6FeV2rgK1e1Pe3Kc33V9UPx-poEtCshW0lIKDZ76HdOySjeatV85tMCO-ttR8PS3r8OiAKmrBkJqXtWulKJW5PZsv_BQF_26nghxbztntnpGqeFevs8ZnfHas6Ycl-l0CPD5p4koVp_PK4_7vNWp7WRQfGLcK3xxQ9WeqiOMtepWnauvMNjGtt-bOSv5Xjec_30hzjLDuUBDvNNa3YWXL9i5NKK3ZIKj5KCnha5ZxsQaqzRo1rVuX8EPX0OJCGOSPrdSsrvrYOjFvPILz3JC8O81li6fFpbJbmAsno_LynwMBygWPcstJmvLDIuTY4nPOjmDDt7m4uxJKJghVwgcsoy2kU5XlYXGyWBac8SURe5HnMRFTEdZLymFZFVRU1hfxCLmlI0zClNCw8eQuATFQsjmgOWZ4JFsQhbkG2C49_oU1zMVxhLGmYhGl80UKFrR1u8ygdr4FokFxdmOWQb9U3NojDVlpnDx6cdO1wAzh0SK58brMDFl-f-xuH4VoELQFHXr5TIt-l2xD4hbdAF71pl__5Tc_E1MOS_jsAAP__wg75lw">