<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/149325>149325</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[MLIR] crash in `-convert-vector-to-llvm` pass with assertion failure
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
sweead
</td>
</tr>
</table>
<pre>
test commit: [66da9f38f](https://github.com/llvm/llvm-project/commit/66da9f38f374e786b2f1c0ecdab0b651c94c4f27)
Step to reproduce:
```
mlir-opt test.mlir --convert-vector-to-llvm
```
test case:
```
module {
llvm.func @malloc(i64) -> !llvm.ptr
func.func @main(%arg0: tensor<14x62x54xi8>, %arg1: tensor<f32>) {
%cst = arith.constant dense<false> : vector<128xi1>
%0 = llvm.mlir.poison : vector<128xi8>
%1 = llvm.mlir.constant(0 : i32) : i32
%2 = llvm.mlir.poison : vector<128xi32>
%3 = llvm.mlir.zero : !llvm.ptr
%4 = llvm.mlir.constant(62 : index) : i64
%cst_0 = arith.constant dense_resource<__elided__> : vector<128xi32>
%5 = llvm.mlir.constant(dense<1> : vector<128xi8>) : vector<128xi8>
affine.for %arg2 = 0 to 54 {
affine.for %arg3 = 0 to 62 step 128 {
%6 = builtin.unrealized_conversion_cast %arg3 : index to i32
%7 = builtin.unrealized_conversion_cast %arg3 : index to i64
%8 = spirv.ISub %1, %6 : i32
%9 = llvm.insertelement %8, %2[%1 : i32] : vector<128xi32>
%10 = vector.extract_strided_slice %9 {offsets = [0], sizes = [4], strides = [1]} : vector<128xi32> to vector<4xi32>
%11 = vector.extract_strided_slice %cst_0 {offsets = [0], sizes = [4], strides = [1]} : vector<128xi32> to vector<4xi32>
%12 = spirv.SGreaterThan %10, %11 : vector<4xi32>
%13 = vector.insert_strided_slice %12, %cst {offsets = [0], strides = [1]} : vector<4xi1> into vector<128xi1>
%14 = llvm.getelementptr %3[%4] : (!llvm.ptr, i64) -> !llvm.ptr, i8
llvm.intr.masked.store %5, %14, %13 {alignment = 1 : i32} : vector<128xi8>, vector<128xi1> into !llvm.ptr
}
}
return
}
}
```
Crash backtrace:
```
mlir-opt: /home/workdir/llvm-project/llvm/include/llvm/Support/Casting.h:572: decltype(auto) llvm::cast(From &) [To = mlir::DenseElementsAttr, From = mlir::Attribute]: 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 test.mlir --convert-vector-to-llvm
#0 0x00005557036b9138 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/workdir/llvm-project/build/bin/mlir-opt+0x18bf138)
#1 0x00005557036b67b5 llvm::sys::RunSignalHandlers() (/home/workdir/llvm-project/build/bin/mlir-opt+0x18bc7b5)
#2 0x00005557036ba251 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#3 0x00007f5fd1325520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x00007f5fd13799fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#5 0x00007f5fd1325476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#6 0x00007f5fd130b7f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#7 0x00007f5fd130b71b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#8 0x00007f5fd131ce96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#9 0x00005557068305d4 (/home/workdir/llvm-project/build/bin/mlir-opt+0x4a365d4)
#10 0x000055570683009e mlir::vector::ShuffleOp::fold(mlir::vector::ShuffleOpGenericAdaptor<llvm::ArrayRef<mlir::Attribute>>) (/home/workdir/llvm-project/build/bin/mlir-opt+0x4a3609e)
#11 0x00005557068ec165 llvm::LogicalResult mlir::Op<mlir::vector::ShuffleOp, mlir::OpTrait::ZeroRegions, mlir::OpTrait::OneResult, mlir::OpTrait::OneTypedResult<mlir::VectorType>::Impl, mlir::OpTrait::ZeroSuccessors, mlir::OpTrait::NOperands<2u>::Impl, mlir::OpTrait::OpInvariants, mlir::BytecodeOpInterface::Trait, mlir::ConditionallySpeculatable::Trait, mlir::OpTrait::AlwaysSpeculatableImplTrait, mlir::MemoryEffectOpInterface::Trait, mlir::InferTypeOpInterface::Trait, mlir::OpTrait::InferTypeOpAdaptor>::foldSingleResultHook<mlir::vector::ShuffleOp>(mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) (/home/workdir/llvm-project/build/bin/mlir-opt+0x4af2165)
#12 0x00005557068eaea5 mlir::RegisteredOperationName::Model<mlir::vector::ShuffleOp>::foldHook(mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) (/home/workdir/llvm-project/build/bin/mlir-opt+0x4af0ea5)
#13 0x00005557070f90dd mlir::Operation::fold(llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) (/home/workdir/llvm-project/build/bin/mlir-opt+0x52ff0dd)
#14 0x00005557070f9473 mlir::Operation::fold(llvm::SmallVectorImpl<mlir::OpFoldResult>&) (/home/workdir/llvm-project/build/bin/mlir-opt+0x52ff473)
#15 0x0000555706fd72e4 (anonymous namespace)::GreedyPatternRewriteDriver::processWorklist() GreedyPatternRewriteDriver.cpp:0:0
#16 0x0000555706fd4393 mlir::applyPatternsGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) (/home/workdir/llvm-project/build/bin/mlir-opt+0x51da393)
#17 0x0000555706eb85f1 (anonymous namespace)::ConvertVectorToLLVMPass::runOnOperation() ConvertVectorToLLVMPass.cpp:0:0
#18 0x0000555706f561a3 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/home/workdir/llvm-project/build/bin/mlir-opt+0x515c1a3)
#19 0x0000555706f56a42 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/home/workdir/llvm-project/build/bin/mlir-opt+0x515ca42)
#20 0x0000555706f5921e mlir::PassManager::run(mlir::Operation*) (/home/workdir/llvm-project/build/bin/mlir-opt+0x515f21e)
#21 0x0000555706f5118b performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#22 0x0000555706f50de4 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
#23 0x0000555707000ce5 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) (/home/workdir/llvm-project/build/bin/mlir-opt+0x5206ce5)
#24 0x0000555706f49fd2 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/home/workdir/llvm-project/build/bin/mlir-opt+0x514ffd2)
#25 0x0000555706f4a288 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/home/workdir/llvm-project/build/bin/mlir-opt+0x5150288)
#26 0x0000555706f4a4a2 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/home/workdir/llvm-project/build/bin/mlir-opt+0x51504a2)
#27 0x0000555703697b07 main (/home/workdir/llvm-project/build/bin/mlir-opt+0x189db07)
#28 0x00007f5fd130cd90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#29 0x00007f5fd130ce40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#30 0x00005557036975a5 _start (/home/workdir/llvm-project/build/bin/mlir-opt+0x189d5a5)
Aborted (core dumped)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzcWl1v4zaX_jXMDRGDor4vcuE4STvApAkmgy6wNwYlHtnc0KSWpGbi-fULUrItOXEm2cnbogXaiSKdc_g854tHYpi1YqUALlB6idKrM9a5tTYX9jsA42eV5tsLB9bhWm82wqF4jlF6mWWclU1cNCi9QrRYO9daFM8RvUH0ZiXcuqtmtd4geiPlt92P89bo_4HaIXozGKM3e0NxnkBeZBVtoppAzVlFqiyN6jKpk4bmiJaIzBGZPzhosdPYQGs072rwy5I5ysjwH5lvpDDnunXY45753_D5ea3VNzDu_BvUTptzp88DsqkmIvOeK7Mv2dW8k4BRfonIHGOvP2s6VWOUkA2TUteIFiJLEC3xOYqvMaJREGqdCRpeeKQhFKIFoikzK-L96kBZbVC8iJKnjD6lyZMoUHyN6AL3UtFEqolpeFruEWEvV1uHUXyFmRFuPau1so4phzkoz2nRMOl_XmNvq3eGX5EWTyLy5vZ2SLAS8HsXzlotrFYvqBUTtehIbQcA0YIEZRHTgHm43CvSt67X097rxUd6P8DooHXkfUTT5DS2jPaIFIenPbwsmbh1SU46dmnA6s74bFwslyAFB75cvuzmI_zpaVC7mEUvGyp24T8ZEtY0QsGs0WbIoN7JxBeQ98Y-b_Bz0fggmlFsfdlFtNjpIJpmQaDqhHRCzTplgEnxA_iyLzUrtFrWzGfj3t7gYG_zEPvBD_mvmdvHajBXBHO2Febb7NNDV4XcHEopO8q-QaU8REIoC8aBhA2osGIxqFLfJfss7y2kVz8J8a4u-uTp5Wbw5Ayr3dI6E1LFSlHDgCG_1E1jwdmggNJLEprsAlvxA_Y3k93NYGF_O_K385OYvKv2t5MRUI8wehPCoRD-FpQjd9JRfB9-M8AcmK9rpnpfD9GKoukSJ2zFY-J96J_zjuhgNDTY0_TfwDTpey0Wakz0uAfv0I261gp2Odm6UKdxn47JLg3DhnJoe3SBT-1H_lExWmlIe2dmG2Yfgc-s0yYQT3fOTHYXsefPpFipvjziK3woiBfDutvHnpPtnXDcq_OrXYPcXxlwnVHhl_7m8O90-0ZkvjDMrnHF6kefwa_MB73DbtZ6A4jefNfmkQvzfFYZJhihatlxONx46NpWGy-xYNYJtZqtUTxPc-rtcqil27aAaME6p30Iglo8R_HctzFEixujNxjRLPTw9PKrDp706HqxK9_-r_t427nrg9YrTeT8I1F1DnyuxXM8tz6Dhd88MyIsQ_Hiqw4BKP5kMqzmF80wojRAiRdft_1z_5CZVRfiqhssVK03LXOikoB7PhGiFNEcN0xI4DNE5vefr-cP19h21UY4zHDVrfx4po3zhfzu2VBY24FF9AYzxfHgduzWgOtpZGdhHGT1I-bdpu3jTGZ9Ot8bvTJssyfjEeD3DYYY0Zhg8kQIIWma5iTOqjKKi1Eg7db2F_dGKBewfA05R4uDkGHfl9o6A2wT_L7wKd9HoXhD-vkdkfuffly82ecuvSRPUVE1UVz0s7GHGx3BzfIqfQnul049iJVi8nemuARjh9B_BKI6r9IDInqEiPm9c7K2n5m9P_zOsRKq0UuH6Dw0Cy14uCwHDTurWx9nEv7vF4iHBfImbXgU0zSlZOAhRYXozVORLbPkXArVPZ2vVNc_qGdWz7KAOaEpJQfEydRgXpZNjVu3NsD48lFI-T7rZVY29cF6egw3yTO8soHee2EneXYwnE0NkypvYswqX4TvMkuLvIkPZvNnZqPq3Qaj6mCwmBqMaiiz9xmMSyhHxMtxhmVFTFKe_HoiJyzOUp4Mr500jsjxMqSEUQ_ebWz--mHdNY2Eu7b_tdF-keInsr-BAiPqOWdtv0MeynZuDNt-gQbFi5eafny9ew_4CNKkhAPpaEoa6igb95PPeiVqJr-A7aQbOcMzX_zMN3Qx0fhqWPi6gOL5f4PRX2AltLKvSN0p6Bd-XebrtgU-CI5B_RlA-afBgf7Wp00rfwLroatrsFab15D9cdeCYYpbFC9o91bzd-0n9Y0ZwfxmNRG73DqoNQcv4cA0w1ATz3vtiexCKy783s-k3D60UHeSOVbJ0xoTEHP5nW3tWM-jfkHrFjbabK-bBmr3FlyfVAPB228RnkAaae6L4_pQWQ9CreSQCb9r_fiGzAuTzng1MMy7bNh23lN4E_GHDZOyz6sQ67HWXXuj5T4Pr3dT369XbEOjLD1ULD2qWAYsHXnWl5V1YIDvWf_BNkMkbjUH-Tb_7d0fXP4v8iYBNvJmPPZmTpqScI5f4jpu9P8kxiltGsL5gXFyzDjJ43cw_psoJHl8oJBOSqDhOYUwEDCl1XajO4sV24Btw5xe9th-MwB8e8-cA6O-wHcjHFwZ8Q0G7K3Rvu__lzaPUoSXN4_9tNbRoOphZUewkrgce5a1rdyZssGwkNtJZfVb4vAKcbh9Y_QP2K0-GHgAh8N3xGfSPeRBeqFVI1ZeoNJaDqP2rwck4iwuRwHJJ8yhKtIm-llAFv1b2bBL68-f_7y9Z3Z4fTGdulOjRhOCcULjhUgU00ikWcTGkeDgmJD7nUjftd7Ofu8ZAExCE6D1_e50Jxy1AMXk1gp7yxRbgTkEYIE7FU5j-Ie9I6ZRWkdsFI3ymD1L6LvZ34sWpFBw1Pq96J5U9uHuGCv5pT4p60x4vdfmmdWpwKhp7bDfMwPKfVKN3tXKR-V_WrOE7j1OyZHHSxrBEdAd9Reza-q5j0HY0Ogw59PoCGEUFRVuwTTabOa16yfxVz9pWMeHbwxrZoAvWzd9h3kIpyO3Kz-8nWhNt58_fVlo5eDJPQvmrRTmrnW3TKi-aY1slHj09Hm5U3pEjnBITr7EHO43nQrMlyZs4KcUEC323Dsl_reDZ9z7Wfmya5o-uffyHBrWSbfkIMHPA6d0hje88axwHIFyP5XVTMqK1Y_LRk2235GT3hrL_zif0bdOwSTUrp9PzfZ5cryWAL0IosmS9MO91Gr11zJ5JTI_Sc-jGZOQGsYTu22lcHPF7_sJZIf1b0m6f2BJvCoxGb6dEWrlh_VTtz9kViVZDYcXDJpMe1NSNpy-nPX_tpr9iF0saRo-2mePBv-E0aI46cxhoKjXrB8d5u9Nh5954mP2aUKL4sAwO2aYsNPp8h6GfwmVhI2ClU8PBsq8IjneMKE-4hCi5BXJD2sdfXMmNS_feUZAS16Sg8Hy2CAkBC-XXmdpHTNuOWLy5iUgOSxxfPJU5ilLcW_8YzyU7j50zCttHHBvtdYGwmEa7D4J7I5Nz_hFzMu4ZGdwEeUpzbM4KZOz9QUpc8aTNGdpSnlFaEEzxjOe1JTFWUaSM3FBCU1JHuVRkiRpMovTPK2gKPIoLRjjDUoIbJiQs3ACrM3qLJwAXkRJGdP0TLIKpA1_nUZpyFNKUXp1Zi4C36pbWZQQ_1ZuDxaccDL8RZsfKlF6NRwdinAkeurILyO4Zdbi78KtMdsfojZMyM7AWWfkxf__MHNg8-2C_l8AAAD__x3Q8Q0">