<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/61845>61845</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[MLIR] ` llvm::cast` leads to assertion failure `isa<To>(Val) && "cast<Ty>() argument of incompatible type!"
</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 commit: https://github.com/llvm/llvm-project/commit/c3440e213ca02c2fcd91f3f8cf65774a2b1a9e6f
Steps to reproduce:
```
mlir-opt test.mlir -linalg-detensorize=aggressive-mode
```
Test case:
```
func.func @main() {
return
}
```
Crash trace:
```
mlir-opt: /home/ty/llvm-project/llvm/include/llvm/Support/Casting.h:579: decltype(auto) llvm::cast(From*) [with To = mlir::FunctionOpInterface; From = mlir::Operation]: Assertion `isa<To>(Val) && "cast<Ty>() argument of incompatible type!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /home/ty/llvm-project/build/bin/mlir-opt test.mlir -linalg-detensorize=aggressive-mode
#0 0x000055aa4cc210da llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/ty/llvm-project/build/bin/mlir-opt+0x22b0da)
#1 0x000055aa4cc1e36c SignalHandler(int) Signals.cpp:0:0
#2 0x00007fb070ed1980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
#3 0x00007fb06fb82e87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
#4 0x00007fb06fb847f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
#5 0x00007fb06fb743fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
#6 0x00007fb06fb74472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
#7 0x000055aa4d240068 (anonymous namespace)::LinalgDetensorize::runOnOperation() Detensorize.cpp:0:0
#8 0x000055aa4e53bbee mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/home/ty/llvm-project/build/bin/mlir-opt+0x1b45bee)
#9 0x000055aa4e53ca43 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (.constprop.510) Pass.cpp:0:0
#10 0x000055aa4e53d0cd mlir::PassManager::run(mlir::Operation*) (/home/ty/llvm-project/build/bin/mlir-opt+0x1b470cd)
#11 0x000055aa4e531043 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#12 0x000055aa4e531711 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, llvm::ThreadPool*) MlirOptMain.cpp:0:0
#13 0x000055aa4e531901 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>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::'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
#14 0x000055aa4e603810 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) (/home/ty/llvm-project/build/bin/mlir-opt+0x1c0d810)
#15 0x000055aa4e52ca23 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/home/ty/llvm-project/build/bin/mlir-opt+0x1b36a23)
#16 0x000055aa4e52f24e mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) (/home/ty/llvm-project/build/bin/mlir-opt+0x1b3924e)
#17 0x000055aa4cbed0c0 main (/home/ty/llvm-project/build/bin/mlir-opt+0x1f70c0)
#18 0x00007fb06fb65c87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#19 0x000055aa4cbfff2a _start (/home/ty/llvm-project/build/bin/mlir-opt+0x209f2a)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcWF9z4ygS_zT4hYoLgf4--MGx47q5mlRSk9Q-7IsLoZbMrQQ6QDPxfforkGNbTrKT3cztzV1VYgnRdPev_9HArZWNAlig5Bol6xkf3E6bxTXw9lfod3szK3W1XzyCdVjorpMOsSXeOddbxJaIbhDdNNLthnIudIfopm2_Pj-ueqP_AcIhujkspRvB4pgAjZjghApai6qIalbnok6TLIs5LSNeQFojskZkOf4-OOgtdhob6I2uBgFe9BkBSsnhLwy7Vpor3TvswLq5H-GrVireNlcVOFBWG_kvQGzNm8aAtfIrXHW6gleZjci5PZM5JagHJeb-B6OYdFwqRHNEC4yy65EAYwNuMOqwOlu_ymZluN1hZ7h4U9IzLu8BRDc73QGiG7d_ae6DE6QS7VDB6cPD0PfaeIoVt06qZr5DbJlkhWdZgWjdvgdEcz447TGEZWyJ2FJw6xDNN8Y7eRnwJdffpNvhR40RW2Ov3Ei6GZRwUqu7_pNyYOqA6Br7pReUdz0Y7klRsvYaLK0F48cYpURajtjqUSN2g2j-C2-DUJoimmJEaVCIrR7347yf5KYZOlAO6xpLJXTXcyfLFvCIKkKUIprhmssWqvlo0_vPN8uHG2yHspMOc1wOjQ8zbZwPuD8c59LaASyiG8xVhQ_2x24HWAT_llz8Fnw8fw5tLn7D1dD1R6eTOSLFvdGN4d0Rkv2-z8tBtpV_-gjcfCwHMKKMYPJECCFJwnksBI1Ixc8Cwu7t-HJvpHIBx2MIXpqfiAz_ttXWGeBd8NwKS-VGP-Z_Bg2i1-SJ0pJUHNHipGs01TUClgr8IBvF279xVbVgEM0PosfPdi56b3MS_o-M6IFRVpckI1BFRU7wdmvAOm1ga9xB81aWiG6e8nSbxt6uw9NVo4Zxonc7A7yaWz0nQeGIFjmZ6MvOxKR1mVPIM2y4tIDPsDetLMXV6pe_f_u1PA7pnGaIbmxAgehmPvejva2g93E3KPk0fvgatFGDHwbWc-FzPZoCji80ibM6wrzUAen7NHHVaI2wKgjJL4QkUyFZzGqOt1se0n3r83Fb8vdjH9cdX0aRxVRkeikyzug7fCe819LgNUbijE68lp1HWUVjQtLc8-RKq32nB4sV78D2IQuKMQM-h5xbn6dcSIxB3alT-Rvr1xnV69GZnysACStLgLNyWoHjsn0urY_6rr_n1i4r3jttjnIRzU9LPEGo56tXy_LlzFLxdm-lveWKNz6pVrjUuvXPQYVGovoRGR6VcVICTIxfXGAXPGZ_GPu97KGVCiY2GEmPkNIfbozzRV7UJ2WdCWVdmxdcpwSj5HHioPs9N6DcJ1VrLLTyu_LyYO95GPdG9_Mk8gUHe2YvQ8kXTHJhzoqI6kKLZ1yvBs7ULB92d0ZEdXS31y-60C8iMcM9mFqbbhnaC_udnca66rBT7biBats7g9jqtOJBD0bAbWMQu3m25IXvbz9_-rLSysGTe-Gn21aau97dcqlWWtWyOeNR4LPZ1-1PL_FlUYR7owVYez3Uddix3gVvUPKfA7yAdwudNvtnVmf0FdR8aN22ghYcvL2G3YTO6r2Yz-nWkrcg3BdopHVmf5g_yXkMG-R9SJblu8zFLs1VkOhM4GfdSMHbL2CH1p0Jqg-t6NZAjdjqrQWI5n-dOd92ahGIxm67bX2ruK3VRO0zO_2E4fG629-ZMiMJolnLu9K3d9nP5BWat1o1f61hf0el7ydMPEmYlLA8ImeusH0r3VJV9xcV57-B7n8wSX-X4tQGjM8Pbo6CVHlEJptjMq2GVHDKXs-z_7cq8cE-g6Wcsokp0wtT1jSGN0156ObEjo9923IaCA_OSNV8gfo9gH9IbJSsoDFMAE0OKaKEigiCOy7VxyTVGRHTIMynJ6w0EXmGt1t_iNpax43bHqS-60wn7PB8mB1fw2TgE853LI6nBa6Y4qzrmnI8Cv7Y7QIpanq6XThewc2qBasKVvAZLKI0J1FeREk02y3qkmRxnvAsKXNaF0WVFKIsuICszCOa5TO5oIQywhiJkoiyaJ7FZV0WNZC4yCGOCxQT6Lhs517LuTbNLFwjLdIoj5NZy0tobbifpVTBNxwmEaUoWc_MIiArh8aimLTSOnvi4qRrw8Wu72NRssYoJZdXev4L8Cpcr_Lj9Zs_kg8G_mPXcLPBtIs_f7kWDPPvAAAA__8pb_uH">