<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/128315>128315</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[MLIR]`-test-transform-dialect-erase-schedule` triggers LLVM ERROR: operation destroyed but still has 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 -test-transform-dialect-erase-schedule
```
test case:
```
module {
func.func @transform_main(%arg0: !transform.any_op) {
%matched = transform.structured.match interface{TilingInterface} in %arg0 : (!transform.any_op) -> !transform.any_op
transform.debug.emit_remark_at %matched, "tileable" : !transform.any_op
return
}
}
```
crash trace:
```
LLVM ERROR: operation destroyed but still has uses
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 -test-transform-dialect-erase-schedule
#0 0x00005e15cae21998 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (./mlir-opt+0x108a998)
#1 0x00005e15cae1f4be llvm::sys::RunSignalHandlers() (./mlir-opt+0x10884be)
#2 0x00005e15cae223a8 SignalHandler(int) Signals.cpp:0:0
#3 0x0000716abecfd520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x0000716abed519fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#5 0x0000716abecfd476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#6 0x0000716abece37f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#7 0x00005e15cae4191c llvm::report_fatal_error(llvm::Twine const&, bool) (./mlir-opt+0x10aa91c)
#8 0x00005e15cae41766 (./mlir-opt+0x10aa766)
#9 0x00005e15ce29082d mlir::Operation::~Operation() (./mlir-opt+0x44f982d)
#10 0x00005e15ce298902 llvm::iplist_impl<llvm::simple_ilist<mlir::Operation>, llvm::ilist_traits<mlir::Operation>>::erase(llvm::ilist_iterator<llvm::ilist_detail::node_options<mlir::Operation, true, false, void, false, void>, false, false>) (./mlir-opt+0x4501902)
#11 0x00005e15ce087a49 mlir::WalkResult llvm::function_ref<mlir::WalkResult (mlir::Operation*)>::callback_fn<(anonymous namespace)::TestTransformDialectEraseSchedulePass::runOnOperation()::'lambda'(mlir::Operation*)>(long, mlir::Operation*) TestTransformDialectInterpreter.cpp:0:0
#12 0x00005e15caf48fc8 mlir::WalkResult mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) (./mlir-opt+0x11b1fc8)
#13 0x00005e15caf48f77 mlir::WalkResult mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) (./mlir-opt+0x11b1f77)
#14 0x00005e15caf48f77 mlir::WalkResult mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) (./mlir-opt+0x11b1f77)
#15 0x00005e15ce08794c (anonymous namespace)::TestTransformDialectEraseSchedulePass::runOnOperation() TestTransformDialectInterpreter.cpp:0:0
#16 0x00005e15ce0f23bf mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (./mlir-opt+0x435b3bf)
#17 0x00005e15ce0f2ba2 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (./mlir-opt+0x435bba2)
#18 0x00005e15ce0f534e mlir::PassManager::run(mlir::Operation*) (./mlir-opt+0x435e34e)
#19 0x00005e15ce0ede6b performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#20 0x00005e15ce0edacb 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
#21 0x00005e15ce196df5 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)
#22 0x00005e15ce0e89b2 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (./mlir-opt+0x43519b2)
#23 0x00005e15ce0e8c63 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (./mlir-opt+0x4351c63)
#24 0x00005e15ce0e8e72 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (./mlir-opt+0x4351e72)
#25 0x00005e15cae00c27 main (./mlir-opt+0x1069c27)
#26 0x0000716abece4d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#27 0x0000716abece4e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#28 0x00005e15cae00795 _start (./mlir-opt+0x1069795)
Aborted (core dumped)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWUtv4zgS_jXMhYhBUe-DD-4kxjbQQYIk2D0alFiSuaFILUl1J5f97QtKdiQ5VnrSmMG-JnBsiY-qr74qFksUs1bUCmCN4i8ovr5gndtrs34RlqmaXBSav66fwDqsFS510wiHwg3eO9daFG4Q3SK6rYXbd8Wq1A2iWym_H38uW6P_DqVDdHuYSrcszzJacJYnlGYloyEEScKyIK3ykKW8KPM8TcKyQGRjHbQWO40NtEbzrgSvkWxQQg4fsmmkMJe6ddiBdSt_hy_95aUzTNlKm-aSCyahdJdgmIVLW-6BdxJO5Pg5uGT2nArtx2OUfkFkg6tOlSv_hVFE3pTsGiYUohmiMTM18RQhGrx1r5h63ekW0fwoBmOMaNww5-FgFF7jcbB1pitdZ4Cv-gFYKAemYiWg9MuTkELVX8eWaywUPujFg-JsQfclCm_O4hoAjc0ciq5eQSPczkDDzPOOuQleRK8wotQJCayQgCjFSxYPkg24zqj-BqXXnt_he8JyaZjdewjnvPzt219v8c3Dw92D16NbMMwJrTAH64x-BY6LzmHrhJR4zyzuLFhENvffbjaPN9h2RSMcZrjoah9L2jgfVZ-OYWFtBxbRLWaKY6FK2XHAbg94AF-w8rk3YIXI5tGx8hnzrmkHc8gK93_3RteGNZiZumtAOY8ArxDdvkUyotu9bgDR7Q9tnrkwiG5_IboxoiHB5IUQQmII4pIBDfI8w71x4QaFG_tqh4t7I5TrET_1DqDZOMiwHzttnQHWIJp41wvl-kim2RQ3ol_IS0AylucZovkBQTBHEFRRAecQPHTqUdSKyb8wxSUY20fxopIsKmBUQk_MpCHL8EwcotkB9dBsV2XrHUP6_0FKeJCSBgkroKx4TMmwmLZSFIhuX7Jkl0SXUqju5bJW3dBRrqxeJT2wiMaUjLCimUAeB3lV4tbtDTC-e_ax-inpeZJX5Sg9PoUbpQmubW_eZ2FHaTIKTuaCIUyrELPCr5pPiaVZWoWj2HTupCjIg3ISCcO63FXMMbkDY7SZReHTD6EAl1pZd4jCQmu5HCGM5cGErOxUeZokizPTZMJGPp0JNCcZ5dhPGXDdHXPRcPvP8X45fqOoyjPKBx1-jZATHVlO6IQa0Uph3U40rUTh1WTx-BbYCd-LwquzoG48VRNRvSRnmPCJZ2mK__jGPqfM3DDMF84P1maGZuji4JiQQ4vSHHa69VKXlNEr7EwH_rdi0vYX37Xg7xsGS97ahgvfuMBxTIKc0JHjWSICkqUsyid-_BuTzw9gO-kmbPlt3sPcGahmBkxGI5qdNWzjVR-JLJmUfnfYVQqFV4hmTGn12ujOYsUasG2fdPNDqIN1T8f8fj2k9xvvicdDcr9n9pA1Tafu1EnIDT2IppI1BWeIpj-DSDOpVe1ZXRyGz4Hqi5DWgANzkk494fOkXEVZVWbnCR8bp9Hzg8nnGelbbX4ww7--Bd_NB4Zd_c5unJHj590Z7reVhfwTFEFVZmP0he_ISNP_KzLSdCQj-pOMkYz4NC_lUYn_2AzxC4s5maOsaFhUC965a5_0XesRbDhre3ccgMyY7CEO_lj21NizUUy-WmFvmWK1p_dYAFzhTvVPsPyjujQK4yIsqpH29NSggtFPG3QvWpBCwUmI-KFvOJPf3cLpJK_qq_IPjP5ZwtdMm48GTCqVI_Z7ZkC5r6rSx-pq8xGJBZvsqdkJiXEYwYnuozVnY-B0k1lQCmEEo9J5QUaAQ1LgFoyP5U05FBsfP79Yxw8F1J4Z4LvWzSuZR92ZEm5rn0hmJeeI_Pbb14crrRy8uHeU30ph7lp3y4S60qoS9URGjie979cZJafGsbKY5KtvuhYlkz8rVJYmIJq92d4p8Y8O3tl-C402r1-6qhpC8G08h4p10hd4EhwszxnKx1mWPfXAUl10lsLf6ss_3J4R3SFjPkAtrDOv74PjowA4lmfRjsxrr_8Iz_wkPOdFdJAnvIonhttWCrdR_N7oEqw9Yv23BN1_4ZL4cMS079EZoeoHqBabl3JpVfEqfsullJ6kmywv6PlA_l9bhkt7TZAX4wZHw1N-yiRc5OewOZd7NmzDm8867WfGLYMuk3AEHZ2ChnTZqZ8B_avoIJ1QGs9PYggpaYob1p9hnzuOSfKSjuUyPT2cinj-yUM6mvOcjALTU4EQEbzb-Tk765hxuyO4z6iAaKIiOzU5zWM8CF80Os0Py3RTaOOA-4GlNtCfKMPx7Oh4RH7B1yHPw5xdwDpII0KDMEjSi_064ywNsgTCKg7iKgg4CdIqCgOIUsrzgl2INSU0JpRSkoU0Slckj6qqDDNgKaNRHqGIQMOEXPmgWGlTX_TH4OuAZmEQX0hWgLT9yyNK-wChFMXXF2bdH54XXW1RRKSwzo4SnHCyf-HkyygUX6OE_MZj7YRgZ0Rdg7H4V14KXHRGrn_94P9g9Pc1_VcAAAD__zy3WpI">