<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/128318>128318</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[MLIR]`-remove-dead-values` triggers Assertion Failure `isa<To>(Val) && "cast<Ty>() argument of incompatible type!"'
</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 -remove-dead-values
```
test case:
```
module {
func.func @parallel_region() -> () {
%alloc0 = bufferization.alloc_tensor() : tensor<320xf32>
%alloc1 = bufferization.alloc_tensor() : tensor<1xf32>
%c320 = arith.constant 320 : index
%0 = scf.forall (%arg0) in (%c320) shared_outs(%arg1 = %alloc0) -> (tensor<320xf32>) {
%val = "test.foo"() : () -> (f32)
}
return
}
}
```
crash trace:
```
mlir-opt: /home/workdir/llvm-project-19/llvm/include/llvm/Support/Casting.h:578: decltype(auto) llvm::cast(From *) [To = mlir::RegionBranchTerminatorOpInterface, 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: ./mlir-opt /home/workdir/test.mlir -remove-dead-values
#0 0x0000563423da5998 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (./mlir-opt+0x108a998)
#1 0x0000563423da34be llvm::sys::RunSignalHandlers() (./mlir-opt+0x10884be)
#2 0x0000563423da63a8 SignalHandler(int) Signals.cpp:0:0
#3 0x000075c340961520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x000075c3409b59fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#5 0x000075c340961476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#6 0x000075c3409477f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#7 0x000075c34094771b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#8 0x000075c340958e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#9 0x00005634270af84d (anonymous namespace)::cleanRegionBranchOp(mlir::RegionBranchOpInterface, mlir::dataflow::RunLivenessAnalysis&)::$_3::operator()(mlir::RegionSuccessor const&, mlir::Operation*) const RemoveDeadValues.cpp:0:0
#10 0x00005634270abfca (anonymous namespace)::cleanRegionBranchOp(mlir::RegionBranchOpInterface, mlir::dataflow::RunLivenessAnalysis&) RemoveDeadValues.cpp:0:0
#11 0x0000563423eb78de void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (./mlir-opt+0x119c8de)
#12 0x0000563423eb78de void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (./mlir-opt+0x119c8de)
#13 0x00005634270aa065 (anonymous namespace)::RemoveDeadValues::runOnOperation() RemoveDeadValues.cpp:0:0
#14 0x00005634270763bf mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (./mlir-opt+0x435b3bf)
#15 0x0000563427076ba2 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (./mlir-opt+0x435bba2)
#16 0x000056342707934e mlir::PassManager::run(mlir::Operation*) (./mlir-opt+0x435e34e)
#17 0x0000563427071e6b performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#18 0x0000563427071acb 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
#19 0x000056342711adf5 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)
#20 0x000056342706c9b2 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (./mlir-opt+0x43519b2)
#21 0x000056342706cc63 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (./mlir-opt+0x4351c63)
#22 0x000056342706ce72 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (./mlir-opt+0x4351e72)
#23 0x0000563423d84c27 main (./mlir-opt+0x1069c27)
#24 0x000075c340948d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#25 0x000075c340948e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#26 0x0000563423d84795 _start (./mlir-opt+0x1069795)
Aborted (core dumped)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWVtv4ywa_jX0BjWywceLXrjpRDvSVK3a6tvLCAN22BLwAu60--tXYKd2PElnOtK3R2mmcTg87_kBvyHWilZxfgXSa5DeXJDe7bS5ehWWqDa6qDV7u3ri1kGtINX7vXAAV3DnXGcBrgDaALRphdv19YrqPUAbKV8OH5ed0X_j1AG0GbeiDSmLAtWMlBlCBSUI8zjLSBHnTYlJzmpalnmGaQ2iyjreWeg0NLwzmvWUe4lRBbJo_BdVeynMpe4cdNy6lf8GLw3f6xd-yThhly9E9twuNvm1kBJ7Ck-zXnII8msQVRA2vaIr_weCJOqIIVJyuTW8FVoBVABUwkuAv8Dx-bANQoBSIqWmEQT4BtZ903Aj_kGc0GoVJraOK6vNYSOu4DiA1xhFrw1GAH9ZgMW_ARb_AEUxGrQiRrjdimplHVEODsMVFIrx12n5sNbSZtVob_9ga0pMG3lhQo0DHtYP2B0xnG117-z7ykHxd5_M3XbK6iNPBiVeiBwhUAh0ozVAaGbvIhgeCJUHI_Ib_2S4640KY8PI-HcWfWqI3UFnyEepNojb7PSeA7T5rs0zE2aR8ZdxOZWCUFT2jE8Dj33XaeOrYU2sE6pd7QCu0rzw0IxT6d46DlBBeqe9VWEbrgCuKLEOoGJj9B4CVAXr0-snHZzjFRyWPYQEvTZE0d0TN3uhiNPmrvuqHDeNtw6t4QBytO-u4yakFUhvvC6Vtdz47xBkkbAE4PWTDhEq_iAySEcZQJmPS1ANr5_ehnk_SUzb77lyUDdQKKr3HXGilhwO9sUhhDlsiJCcrUBU3X_7Uj1-gbav98JBAuu-9cWvjfM08GnSEdb64kcbSBSDYxig23E4BLom9DkE28t-dIQ-Q9bvuyH00WrIvnujW0P278Z4DeAKoM079ZxKhp_REQQIRzB6jaIoSjOcIMxIWpbFLNb2zQ4P90YoF9R7CpmJimmRId-32jrDyT6EYg2FckNgirmSAF1Hr3FUkLIsxsoACMcLDXBS81MaPPTqUbSKyL8QxSQ39lB5p4UUSc0nIWghJMOkgEdwABWj1sOwXdHORyEK_wcUPKLkKcVJVGZx6unKq7GRogZo81pk2yy5lEL1r5et6ocJurJ6lQXFEpQGhhoBk2PAOi0bCju3M5yw7bM4EN2vopdZ2dAJPV2qm-QZbG0w77NqJ3k2AWfHwEmeNxiS2pfIp2BRkTd4gs1_gI3rTwPG9QRYHAOmBS-zzwHikpczw8t5GuURaYqEeUCitHrb695CRfbcdqFCypEuJSdqToZ3HUDFaZ5csOO0iBFHGqm_v5fCN_HCFbe2UkS-WWFD4Y0SAUq2eHjUgUwPp_IJuY89pdxabWA4g8f6PcXGA9OHVfAh0MkNJ-yPQCaLWvFVHS1cVTeU_Ce56ldsOKYmXucF4_BFCzYXxx0Rcnj-TuQzwOtpcqPNd2LYVzdGIZxK55y7nrGev-75ia3hDcDrIPODrWVAnnvhr0Q-3xnmee0MRcYlLdhIkd5Y9P9kLF5kJ4my9GfZuUyY8fDr1Z2aKVj8Ym4lxxrkGa6bM56-6570XXdPrK0Y6YJrR8lHXvILRt-e9_o0cyiHW6JI6123hrXW0n_2KryPsY_O8QSnNa6byaXp0qCaoE8bdC86LoXii_D7pe96fshQv2XhfJMX9VVZZ8JFyzNn9dGCQfIwMep-TwxX7qtq9IFTq4-cWBM0OTFbOLHECV_IPlhzMgeWdH1GKMfJrBjyhdCYZzXsuGm02VehMu1P7nvWsfG2Nrx4dc6_TU07HnVvKL9tPSmcOWhuv319WGvl-Kv7weW3Upi7zt0SodZaNaKdYZRwNnuizoqlcYTWM-75pltBiXzgtpfuPCed2wBQ8W57r8Tfe_6D7bd8r83bdXhhPvIV4w3ppdsyLrnj5_fgLyPhnY9AoMTx5UxK_0qxbdQROc-c9Kux_NPtmbS7EURy6vz5bp15-zE5PkqA6dITDWeO1Kr911ryQWR-kp7HN8o4JqxJZ4bbTgpXKXZvtL-mHXT9tyTdf2FJfLhiPvfojFDtA2_ODp_j0qZhTfrOpWhx7c1oWaPTify_Vobnzpq4rKcDDsVL_9AMn_XPeDjTHRmO4eqzQfuZceeVphmelEZLpXl-PqifUfp3teP5zKX4uLdRJBTlcE-GpuiJ1khWUpRP2xc9iKRg5SebGqhkZTQBpktAnkRwu_V7ttYR47YH5T4jgiczEdnS5LxM4QB-1ui8HMu0qrVxPLxiUG14aLdxNoIfeq0X7AqzEpfkgl_FeRKhGCOML3ZXDNclKxtUNmUep1lTF02dNwSllKVRVKYX4gpFKI0QQlGBcYpXOY4jQuKGJqQu85KCJOJ7IuTKJ8VKm_Yi9AivYlTguLiQpObShp9CEAoJghBIby7MVegs1n1rQRJJYZ2dEJxwMvx84q9RIL0BWXSq55dF0BnRttzYWV91Q4TsDf8z-6sXvZFXv987HV3zcoX-GQAA__-DmNmi">