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

    <tr>
        <th>Summary</th>
        <td>
            [MLIR]`-transform-interpreter` triggers Assertion Failure `op->use_empty() && "expected 'op' to have no uses"'
        </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/a9882bda96228ca23e166a817f93a7dbc99763cb
steps to reproduce:
```
mlir-opt test.mlir -transform-interpreter
```
test case:
```
module attributes {transform.with_named_sequence} {
  func.func @test_const_i64(%arg0: index) -> tensor<4xi64> {
    %cst = arith.constant dense<[3, 0, 1, 2]> : tensor<4xi64>
    return %cst : tensor<4xi64>
  }
 transform.named_sequence @__transform_main(%arg1: !transform.any_op) {
 %f = transform.structured.match ops{["arith.constant"]} in %arg1 : (!transform.any_op) -> !transform.any_op
    transform.foreach %f : !transform.any_op {
    ^bb2(%arg2: !transform.any_op):
 transform.test_emit_remark_and_erase_operand %arg2, "erasing" : !transform.any_op
    }
    transform.yield
  }
}
```
crash trace:
```
mlir-opt: /home/workdir/llvm-project-19/mlir/lib/IR/PatternMatch.cpp:162: virtual void mlir::RewriterBase::eraseOp(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.
Stack dump:
0.      Program arguments: ./mlir-opt /home/workdir/test.mlir -transform-interpreter
 #0 0x00005d5be60ee998 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (./mlir-opt+0x108a998)
 #1 0x00005d5be60ec4be llvm::sys::RunSignalHandlers() (./mlir-opt+0x10884be)
 #2 0x00005d5be60ef3a8 SignalHandler(int) Signals.cpp:0:0
 #3 0x00007b687cf0a520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00007b687cf5e9fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #5 0x00007b687cf0a476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #6 0x00007b687cef07f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #7 0x00007b687cef071b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
 #8 0x00007b687cf01e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
 #9 0x00005d5be956ecbf (./mlir-opt+0x450acbf)
#10 0x00005d5be92f0807 mlir::test::TestEmitRemarkAndEraseOperandOp::apply(mlir::transform::TransformRewriter&, mlir::transform::TransformResults&, mlir::transform::TransformState&) (./mlir-opt+0x428c807)
#11 0x00005d5be932e0ae mlir::transform::detail::TransformOpInterfaceInterfaceTraits::Model<mlir::test::TestEmitRemarkAndEraseOperandOp>::apply(mlir::transform::detail::TransformOpInterfaceInterfaceTraits::Concept const*, mlir::Operation*, mlir::transform::TransformRewriter&, mlir::transform::TransformResults&, mlir::transform::TransformState&) (./mlir-opt+0x42ca0ae)
#12 0x00005d5beb42fdb3 mlir::transform::TransformState::applyTransform(mlir::transform::TransformOpInterface) (./mlir-opt+0x63cbdb3)
#13 0x00005d5be87b0fa0 mlir::transform::ForeachOp::apply(mlir::transform::TransformRewriter&, mlir::transform::TransformResults&, mlir::transform::TransformState&) (./mlir-opt+0x374cfa0)
#14 0x00005d5be874a081 mlir::transform::detail::TransformOpInterfaceInterfaceTraits::Model<mlir::transform::ForeachOp>::apply(mlir::transform::detail::TransformOpInterfaceInterfaceTraits::Concept const*, mlir::Operation*, mlir::transform::TransformRewriter&, mlir::transform::TransformResults&, mlir::transform::TransformState&) (./mlir-opt+0x36e6081)
#15 0x00005d5beb42fdb3 mlir::transform::TransformState::applyTransform(mlir::transform::TransformOpInterface) (./mlir-opt+0x63cbdb3)
#16 0x00005d5be87b5df2 applySequenceBlock(mlir::Block&, mlir::transform::FailurePropagationMode, mlir::transform::TransformState&, mlir::transform::TransformResults&) TransformOps.cpp:0:0
#17 0x00005d5be87b9aaf mlir::transform::NamedSequenceOp::apply(mlir::transform::TransformRewriter&, mlir::transform::TransformResults&, mlir::transform::TransformState&) (./mlir-opt+0x3755aaf)
#18 0x00005d5be8760dc1 mlir::transform::detail::TransformOpInterfaceInterfaceTraits::Model<mlir::transform::NamedSequenceOp>::apply(mlir::transform::detail::TransformOpInterfaceInterfaceTraits::Concept const*, mlir::Operation*, mlir::transform::TransformRewriter&, mlir::transform::TransformResults&, mlir::transform::TransformState&) (./mlir-opt+0x36fcdc1)
#19 0x00005d5beb42fdb3 mlir::transform::TransformState::applyTransform(mlir::transform::TransformOpInterface) (./mlir-opt+0x63cbdb3)
#20 0x00005d5beb43bf1e mlir::transform::applyTransforms(mlir::Operation*, mlir::transform::TransformOpInterface, mlir::RaggedArray<llvm::PointerUnion<mlir::Operation*, mlir::Attribute, mlir::Value>> const&, mlir::transform::TransformOptions const&, bool, llvm::function_ref<void (mlir::transform::TransformState&)>, llvm::function_ref<llvm::LogicalResult (mlir::transform::TransformState&)>) (./mlir-opt+0x63d7f1e)
#21 0x00005d5be87ec526 mlir::transform::applyTransformNamedSequence(mlir::RaggedArray<llvm::PointerUnion<mlir::Operation*, mlir::Attribute, mlir::Value>>, mlir::transform::TransformOpInterface, mlir::ModuleOp, mlir::transform::TransformOptions const&) (./mlir-opt+0x3788526)
#22 0x00005d5be87e7831 (anonymous namespace)::InterpreterPass::runOnOperation() InterpreterPass.cpp:0:0
#23 0x00005d5be93bf3bf mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (./mlir-opt+0x435b3bf)
#24 0x00005d5be93bfba2 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (./mlir-opt+0x435bba2)
#25 0x00005d5be93c234e mlir::PassManager::run(mlir::Operation*) (./mlir-opt+0x435e34e)
#26 0x00005d5be93bae6b performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#27 0x00005d5be93baacb 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
#28 0x00005d5be9463df5 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+0x43ffdf5)
#29 0x00005d5be93b59b2 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (./mlir-opt+0x43519b2)
#30 0x00005d5be93b5c63 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (./mlir-opt+0x4351c63)
#31 0x00005d5be93b5e72 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (./mlir-opt+0x4351e72)
#32 0x00005d5be60cdc27 main (./mlir-opt+0x1069c27)
#33 0x00007b687cef1d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#34 0x00007b687cef1e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#35 0x00005d5be60cd795 _start (./mlir-opt+0x1069795)
Aborted (core dumped)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWltz4ygW_jXkhYoLga4PeXAurk3VZJNKevfVhdCRzEYGDaDu5N9vIdmW5ESZODszu701XR3ZFnDOd75zAYG4tbJSABcoukTR9Rlv3UabixdpuarIWa6L14tvYB3WCgu93UqH2BJvnGssYktEV4iuKuk2bb4Qeovoqq6_7z_OG6P_BcIhutoNpSuepSnNC57FlKaCUwZBHPM0SMqM8aTIRZYlMRM5IkvroLHYaWygMbpoBXiNZIlisvtPlttamnPdOOzAuoX_hc-d4cqW2mzPpXJgGgMOzNE43x0Lbt8TqYu2BsydMzJvHViMksuDzMUP6TZrxbdQrC382oISgJJr3weRJcZlq8TCXzAKideyFlpZt5ZxiGiKaMRNRTyFUhXwgmiGzxG7wQ6U1Qaxq_DF92Q3B4EYIxoJ6zBi15gb6TaLTiJXDhegvAVXKLpkiF5h4i-Bv1AUXXdS2PKt7J1cA641ahA_1xMl1_5zoGBqvTd0vT60rrdcqoOpgReLaDAM5up1rRtv-M5CRKOyM27oY51phWsNFIstd2KDdWN97-gSUTrlANHO1OQay84UrxP3StMZvR3h77X1tAy3S22Ai80e4buGjP0U3eQ5PZhO503vg26kqQsU2Eq3NrDl5nnNVbEGwy2sdQOGqwLvhdIrjCj1bVJViNI5YHtQvfMmdr1KqIuRa3fXUQ4Iw-3Gj_go53rFq43eAqKrH9o8F9Icpf55kCG68iN8g8wRXd0-Irp64M6BUXfeuwvRNIgtg7hj7Ls0ruU1_q5lgbuBbInY8hF-GOnAXO5yli07eu4bRNN7T5GT2gfAsqcXL60F09-LiW68z1sLa9g27rVzUYYRjRGNOzZfGhAOPMmJd1Diq86GfwesNG4tWB9lNMEllzUUC0SWD7_cLJ9usG3zrXSY47ytfJnSxnVDTy2P0trWa1lh72qpRN0WgN0GcO-JnIvnzhte95Pj4hkX7bbpfUMWuPv3YHRl-BZzU7VbUM4jwIsd_V2RfM9bnyicGFFGMHkhhJCoiHKICUCWpbgzpnOGfbX9lwcjlesQfuuih6ZDJ8N_rLV1Bvi24_4KS5_A3hPpGCeil-QlICnPMu-oHYLgCIEIc3gPwWOrnmSleP03rooajD24-10laZjDoIQeKSkZT_FEHKLpDnV_2-7Cl3R_vRS2k5LkcZqIkvCIkr4g7XLgJY3XcXheS9W-nFeq7RvEwupF3AELaUTJACucCowgKwVu3MYAL9bPsq5Pk57FWSkG6dEx3DCJcWU7806FHSbxIDieCIaSJCXDPPdZcpJYmiYlG8Qmb8QG-ckCg3wQmB4REEAWnyaQZZCNDM_GYZRFMYi8fDcAw4hwkZf9SB_kkzzLaElSkozKoM_W_ptflN1spXvsJoylKm76etjNFvdN34k3Te3L3UjAPsd3UvY_9_V1l5ifGWDb2tlP939y3EHX-_1UDGkqUpIMTEzyPWMUCId5PQU4LusjnffNrS9kJRdw-PLNcOl2peJOF1AjdvUlfm8-SfGXkF1pJaBxuFvmdLPamOPDhPem5X_YvYITDoN7J5U2D2lZ5OzTegbmDw2fivIR7XNA_cNHkbMBKBsDTZOclJzMA131a8afMAFZEoqSk8HwcGp4yEka_PEJOEvnX_l2kjdjiEkaDN6MfpZ8i4_yLSpKijvdT7snzstai-eJ_t2dj7lbcVm3Bh6MbnjVudOH36l0n-rMDI_YOF4senuTI3szzst5HX_3z957In7KKhNFnI8WPOnU_JgU4k-vMm9I_avWnFZrSlGIUa3JfpJaQ8kUKMvL4IM15hSUnaA63W0TvOMBj7yqoFgaw18RuxqecB9091j-D-W1jKN5Xvdyv4k5vf1PXrfQRfnNPgo_GQr3jddjJ6NyrWv_OSAtWyV8v7WBErGrbivnUz4cRZqH95HQoeEXXUnB6z6qv6ZnLlyKpAyGNSsNprUKRETjz4bLpMZMQP6p_v4PY_Ou2xy_b74aLXOTQppGNB6IpkdEJykL_EiutHrd6tZixbdgmz7Xe623w57VA7e7Wmtada9GfHU7QUc9387JlE2fPfOS5eM5eVz275tv-r7xcpYFb5w2B8UTJ3eQPl_rl4rXr1baO6545Uv7kGat6k5sio82z0IW5Wy0rUDDY4NyTk826EE2UEsFR4XPdz3gjH93C8eDvKpbZZ3pNji1eSN12qHX3DfssD9wA8rdqlKP5t95EnNOBxKjKYmCshCOdO-teTcGpmTMKgUWjmpOfOQ5DnGOGzA-v5ZdQbS_sclqXdE32Q03UKwbZyZ15km3RsBdZeang7tfbh-vtHLw8nbBcldLc9-4Oy7VlValrCbpPmp9J8-SY-O4yPFcZf_KVHCwvVXy1xbe2H4HW21eL9uy7EPw0L-Akre1WxdQg1-UzI05FNV5D2SH9aTgdZ1z8bwupwV9RNJnffmH2zOgu5a8BuEeoZLWmde3wfFRAPRdEA3XpBOc1lpVf64lH3jmN8Jz8myShTErymhkuG1q6ZaqeDBagLV7rP-VoPsJU-LDHuO2J2ekqh6hnL09V0vLsiijoZZmR-UmynL6fiD_v6Xh3FwTZPkwwU0P-Tw_Imaz_OwmZ7Hh_TS8PNVpv2XcPGgRD89wLDgGDcm8U08B_VV0kIwoPTpQFIWgCd7y7mWF984j40zQ4RDk6CQRyqDITjxJpFmRDZu6RyeJUAYQErxe-zFr67hx6z24U1RAOFIRHZucZBHuhc8anWS7NF3m2vQn8anQBrpjbih2wvcvIZwVF6zIWMbP4CJIQkIDxiJytrkIaJBEcchSiKO4BAo0SIOyKPKIJ4FI4UxeUEIjQiklKYsisogDwUVa5mFA4zBmIQoJbLmsFz4oFtpUZ93Z_EVAU0bZWc1zqO1F_yZK_1oDRdH1mbnoTvTztrIoJLW0zg4SnHR194KVX0ah6BrFZOasPSbYGVlVYOzoDYbdxuXv-CbDWWvqi6-_pbAj4_sF_XcAAAD__wkW3W8">