<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/208331>208331</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[mlir](convert-shard-to-mpi) mlir-opt crashes at Casting.h:566 with assertion `isa<To>(Val) && "cast<Ty>() argument of incompatible type!"' 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: d9681a08a79dc6c57b542483e829dc13c38009cb
MLIR Program:
```mlir
module {
func.func @m0(%arg0: memref<4xf32>) -> () {
%cst_1 = arith.constant 0.000000e+00 : f32
%36 = vector.constant_mask [8] : vector<8xi1>
%cst_12 = arith.constant 0.000000e+00 : f32
%37 = vector.broadcast %cst_12 : f32 to vector<8xf32>
%38 = vector.mask %36 { vector.multi_reduction <add>, %37, %cst_12 [0] : vector<8xf32> to f32 } : vector<8xi1> -> f32
%39 = arith.addf %38, %cst_12 : f32
return
}
func.func @m47(%arg0: tensor<4xf32>) -> () {
%send = shard.send %arg0 on @m64 destination = [] : (tensor<4xf32>) -> tensor<4xf32>
return
}
shard.grid @m64(shape = 2)
}
```
Reproduce Command: `mlir-opt --convert-shard-to-mpi a.mlir`
StackTrace:
```
a.mlir:12:13: error: failed to legalize operation 'shard.send' that was explicitly marked illegal: %0 = "shard.send"(%arg0) <{destination = array<i64>, grid = @m64, grid_axes = array<i16>}> : (tensor<4xf32>) -> tensor<4xf32>
%send = shard.send %arg0 on @m64 destination = [] : (tensor<4xf32>) -> tensor<4xf32>
^
a.mlir:12:13: note: see current operation: %0 = "shard.send"(%arg0) <{destination = array<i64>, grid = @m64, grid_axes = array<i16>}> : (tensor<4xf32>) -> tensor<4xf32>
mlir-opt: /data2/dependency/dev/llvm-project/llvm/include/llvm/Support/Casting.h:566: decltype(auto) llvm::cast(From&) [with To = mlir::Attribute; From = mlir::OpFoldResult]: 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 and instructions to reproduce the bug.
Stack dump:
0. Program arguments: /data2/dependency/dev/llvm-project/build/bin/mlir-opt --convert-shard-to-mpi a.mlir
#0 0x0000562306c0771f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0x256f71f)
#1 0x0000562306c03efc llvm::sys::RunSignalHandlers() (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0x256befc)
#2 0x0000562306c04097 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#3 0x00007f489dfb5420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#4 0x00007f489daa000b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
#5 0x00007f489da7f859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
#6 0x00007f489da7f729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
#7 0x00007f489da90fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#8 0x000056230fa5b02f (anonymous namespace)::GreedyPatternRewriteDriver::processWorklist() GreedyPatternRewriteDriver.cpp:0:0
#9 0x000056230fa5d466 mlir::applyPatternsGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0xb3c5466)
#10 0x00005623086330c7 (anonymous namespace)::ConvertShardToMPIPass::runOnOperation() ShardToMPI.cpp:0:0
#11 0x000056230faf98d1 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0xb4618d1)
#12 0x000056230faf9c60 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+0xb461c60)
#13 0x000056230fafbd14 mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0xb463d14)
#14 0x000056230fafcd91 mlir::PassManager::run(mlir::Operation*) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0xb464d91)
#15 0x0000562306ccd79b performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#16 0x0000562306cce223 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
#17 0x0000562306cce4ab 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
#18 0x000056230fecc915 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+0xb834915)
#19 0x0000562306cc44f4 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
#20 0x0000562306cce9c7 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0x26369c7)
#21 0x0000562306ccec03 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0x2636c03)
#22 0x0000562306b4ca9c main (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0x24b4a9c)
#23 0x00007f489da81083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#24 0x0000562306be3d6e _start (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0x254bd6e)
Aborted (core dumped)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzcWt1y4ygWfhpyQ8WFQL8XuVDszm5XdapTSWr20oUAyWxLoAWUjufpt0CyLTvJJN3lnemd1ExiCzjnO9_54YCaWisbJcQVSK5Bsrqgg9toc1Uaqi7jKL6oNN9eNdLBJ2Gs1AqQEvIizSOKcpoVnKUsyaokxnFORI4LziLCSI5QwSqASoDK2y-f7-Gd0Y2hHSD-CUjR-F_XSgNQ2Wk-tAKC7BqgEsJ6UGzhf0EQow4BnAOcUNMgr7sTnRE1IMv4uSYYkE8AF_ASkE8wzCt2UgBOmHXrCAKygtRIt1kwrayjykG0QOFHAHyNEPRivSyvG_qFJA2rngRz2uyXrTtqv0GQXOcgWYVF4wRAlvmzjDyUvYSgGv-U7myuuzKackatOxIalkCn5wAmMg5y8rmcEfpoWXa9fzq0Tq6N4ANzUisIyJJyHjhdjlimDzvNyTV6xfZRtcfjYYHsdXJGJx3bWswYopzXI_ATpUcMGeEGo2DwcLZ6JVzi7DhenFA2wHgnXkZEVigeMNkNNXwxfh2FQU9QjLo0hlxYJxWdOFvBMXUCUoDztzW-HHlh1N6qEUBjJJ-0ApzbDe1F0IgBLnwihcn7dBrz7V70RvOBCbjUXUcVD7jGZLvUvYOXl0yrJ2HcZVBy6fRl10tIFyEdd2IeHGXfHg1l4iRpASqnqaSMsP9FvAZhjLethDWVreA-HFrR0Fb-LqDuhZnowtmBWoAz6DbUwe_UQvHct5JJ125hR803waFsg4CR1gSNVGM8X49nzva-JEuQXZ-6hxpDt4AsZRpPsT3S6sVN1I6P1vRZ2OMlUeqXZKsQMD_r378msEDy6Q1XKe28U6EVArLBGKHcwUX_33TvgnxcfMOpo9j_Fb1QXCi2DV-eAL5p26fusjf634K56SvAN1KxduDi8OBh6Htt_Iwl9XY2iw0gZZKmYSMUrHXbXgCc08FpjywsIyUgpS_bAOc3RncAp4Gv5Pq7dBv4qIPVk2MAKUvnjKwG75Vr6BecjH_tb3TL74UdWgeSlVddWivMyHmKpKWALB91YCf_jbZBm1eaehcGJGT5uB3H_SA1zdAFv9dQKqa7njpZtQKO5kTB19mUywuAyrsvn8qHT9AOVScdpLAaGmiEp8Zn-sa53nqs-Abgm0a6zVAtmDd8x-MJ3dLaQViAbyBVHE6sQ7cRkBlqN7Ci7JvzxWcat86Mm5T16sy-xPkV1dAsdgUL8qHrx4KFFjD8TK3H3mT7w7FRDbLl_q9UAN98sI6GHoQgiJ79dp-kmKCUoSyL6lmM2K0dP9wZqdys5OL8MMnQ72ttnRF0DKQllMqNHs7PYIdvRJ5xktZZVI_bigcenQAnomavAb8f1INsFG3_SRVvhbG7bfWs2CpRswM2fIItRkUGj1AAnAeOltDKRqparx3Apf_-pCUPH4tphV2w3kcMCv-PCsikIKvjvOC1b28RXK-NsE4bsTZuMq-VFcA3z3m6TuPLVqrh-bJRwzjQu40RlC-sXqBgRhTHGB2MiI90UIoQqqCh0ooPCGdebBrExgSh6iA2ORab1XlSQFrpD2GeicU4T4qD2PRUbLb38YcFZngmMDsWWKCapz8mkJCapweB-TwoappUCPt-MqdKq22nBwsV7YTtQ3YVY_D-wwjBt3fUOWHUvfhupBMrI5_EVHd7o5mw9l_afGtlqOY-bt5e9UooFSeweJyms8pO-77dibJBsGy3AOeHGfei8bvymPiHxzdG_y522icBD8LBcNB4MXuEPM1ealXLxk-otG6nZDhjvlaEJXE6ucaXkqMimKeEIJa955rlWFoffGV91Ld3n--onUqOGdRX9XXfr4xOOUw8cYIHEB07oS5yHs3Y4cJR2e622kf9tffKSk77cIKZdB55JaAZK8p8m95jOhkpFW23Vtpbqmjjy9OO-yUcVDiA8_9BUa_iNMp5dHAEPuWBpeiHebiTvWilEkd8jFP35qVnJ2a-yKv6HFoCv59r80Lq8YRdW-sHJux31De9n1Wtdwlz9iSI04il6MA9OeG-4lF8AnlHwp5paq1vkvKfYvLc5hAexQdz4hNzGC-id8z5A0POjTXmxSzsk-N-gfGsqGAvTK1NV45d5TsNl3V86ns21Ai-7p0_dxxWPOjBMHHbGH8ueb0E3375fL_Uyoln98J3t600X3t3S6Uai_NMRgFno6_UtvTEOIExgdPGdT3UdWiGPmTboOR_BvHCtlvRabPdiZrN56KmQ-vWXLTCH13eWkM-TefA18fvRf1xNubzVpK2gjm_QVpnti_G905ZSdoobZ1kvwkjaynMvk0sj3E9hp7tTuv2s3LC1GFHKt93QnbqhJhWM7FfdCMZbccD3Ox5PagQfuvxSvOtBQDnv4CTjrzwdkAVQdR4AG5bf45b1wqQ5av-_WVC8-NR9Ye5Ok4BOGtpV3EKcPZr-O4DLsN5q1XzixSEj8baO2l5fCYQjBVRMnOl7VvpSsXvTqrlX0HA37YU_OGM-diDM1I1L4J19vi8XUJO4iJKDl1CcVLD47iOX8_7v1vV8rQuemrcAr2bUxidbnUFy96kaWrd2YaOe235oy5_z8bzXjSlJC1Ytg8JHJ3ayhA5i61_slEMkYNRx7dnVcxowWBHpTqr1riKacEOWo-v1GgeoZzA9bqVFVtbR41bzyB89EopRvnMsPjYMEF4KuAo_LzXkXHFUzHqLSttnOBePtNGhOtnwSdMuzdmF_yK8IIU9EJcRVlOkjjL8-hic0VJlNAizfJaFHFK6prVUcIxTypaFEWNL-QVRjhFGcpxlOQoWghWFEnNclogykjGQIxER2W78PgX2jQX4Wb9CqOckOiipZVobXi3j3EIOoxBsrowV8HeamgsiFErrbMHCU66Nvx7gLAgWQXbXl50-zjd34WHW3thIXXw5D0JDK886J_5uuJiMO3Vz7-SmLh7usL_DQAA___36xP6">