<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/64409>64409</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
--convert-memref-to-spirv crashed with assertion failure "ArrayType needs at least one element"
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
anonymousMCS
</td>
</tr>
</table>
<pre>
git version: fe5370dd50e48f827aaee9f5fa80e751b1759a25
system: `Ubuntu 20.04.6 LTS (Focal Fossa)`
reproduced with:
`mlir-opt --convert-memref-to-spirv a.c`
a.mlir:
```
%alloc_20 = memref.alloc() : memref<0xi1, #spirv.storage_class<StorageBuffer>>
%cast_21 = memref.cast %alloc_20 : memref<0xi1, #spirv.storage_class<StorageBuffer>> to memref<?xi1, #spirv.storage_class<StorageBuffer>>
```
trace:
```
mlir-opt: /data/chenyaosuo/exp/newest-llvm-reproduce/llvm-project/mlir/lib/Dialect/SPIRV/IR/SPIRVTypes.cpp:60: static mlir::spirv::ArrayType mlir::spirv::ArrayType::get(mlir::Type, unsigned int, unsigned int): Assertion `elementCount && "ArrayType needs at least one element"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /data/chenyaosuo/exp/newest-llvm-reproduce/llvm-project/build/bin/mlir-opt --convert-memref-to-spirv a.mlir
#0 0x0000564631c306ff llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/chenyaosuo/exp/newest-llvm-reproduce/llvm-project/build/bin/mlir-opt+0x14096ff)
#1 0x0000564631c2d984 SignalHandler(int) Signals.cpp:0:0
#2 0x00007f8ff9368420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#3 0x00007f8ff8e0500b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
#4 0x00007f8ff8de4859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
#5 0x00007f8ff8de4729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
#6 0x00007f8ff8df5fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#7 0x00005646335b4e3b mlir::spirv::ArrayType::get(mlir::Type, unsigned int, unsigned int) (/data/chenyaosuo/exp/newest-llvm-reproduce/llvm-project/build/bin/mlir-opt+0x2d8de3b)
#8 0x0000564635e76673 std::_Function_handler<std::optional<mlir::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>), std::enable_if<is_invocable_v<mlir::SPIRVTypeConverter::SPIRVTypeConverter(mlir::spirv::TargetEnvAttr, mlir::SPIRVConversionOptions const&)::'lambda6'(mlir::MemRefType), mlir::MemRefType, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>>, std::function<std::optional<mlir::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>)>>::type mlir::TypeConverter::wrapCallback<mlir::MemRefType, std::enable_if<is_invocable_v<mlir::SPIRVTypeConverter::SPIRVTypeConverter(mlir::spirv::TargetEnvAttr, mlir::SPIRVConversionOptions const&)::'lambda6'(mlir::MemRefType), mlir::MemRefType>, std::function<std::optional<mlir::LogicalResult> (mlir::Type, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>)>>::type mlir::TypeConverter::wrapCallback<mlir::MemRefType, mlir::SPIRVTypeConverter::SPIRVTypeConverter(mlir::spirv::TargetEnvAttr, mlir::SPIRVConversionOptions const&)::'lambda6'(mlir::MemRefType)>(mlir::SPIRVTypeConverter::SPIRVTypeConverter(mlir::spirv::TargetEnvAttr, mlir::SPIRVConversionOptions const&)::'lambda6'(mlir::MemRefType)&&)::'lambda'(mlir::MemRefType, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>)>(mlir::SPIRVTypeConverter::SPIRVTypeConverter(mlir::spirv::TargetEnvAttr, mlir::SPIRVConversionOptions const&)::'lambda6'(mlir::MemRefType)&&)::'lambda'(mlir::Type, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>)>::_M_invoke(std::_Any_data const&, mlir::Type&&, llvm::SmallVectorImpl<mlir::Type>&, llvm::ArrayRef<mlir::Type>&&) SPIRVConversion.cpp:0:0
#9 0x00005646344d92a0 mlir::TypeConverter::convertType(mlir::Type, llvm::SmallVectorImpl<mlir::Type>&) (/data/chenyaosuo/exp/newest-llvm-reproduce/llvm-project/build/bin/mlir-opt+0x3cb22a0)
#10 0x00005646344db647 mlir::detail::ConversionPatternRewriterImpl::remapValues(llvm::StringRef, std::optional<mlir::Location>, mlir::PatternRewriter&, mlir::ValueRange, llvm::SmallVectorImpl<mlir::Value>&) (/data/chenyaosuo/exp/newest-llvm-reproduce/llvm-project/build/bin/mlir-opt+0x3cb4647)
#11 0x00005646344dba5a mlir::ConversionPattern::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const (/data/chenyaosuo/exp/newest-llvm-reproduce/llvm-project/build/bin/mlir-opt+0x3cb4a5a)
#12 0x00005646370a31e8 mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<mlir::LogicalResult (mlir::Pattern const&)>) (/data/chenyaosuo/exp/newest-llvm-reproduce/llvm-project/build/bin/mlir-opt+0x687c1e8)
#13 0x00005646344eae19 (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#14 0x00005646344eb7a7 (anonymous namespace)::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>, llvm::function_ref<void (mlir::Diagnostic&)>) DialectConversion.cpp:0:0
#15 0x00005646344edc14 mlir::applyPartialConversion(mlir::Operation*, mlir::ConversionTarget&, mlir::FrozenRewritePatternSet const&, llvm::DenseSet<mlir::Operation*, llvm::DenseMapInfo<mlir::Operation*, void>>*) (/data/chenyaosuo/exp/newest-llvm-reproduce/llvm-project/build/bin/mlir-opt+0x3cc6c14)
#16 0x0000564633caba35 (anonymous namespace)::ConvertMemRefToSPIRVPass::runOnOperation() MemRefToSPIRVPass.cpp:0:0
#17 0x000056463445b13e mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/chenyaosuo/exp/newest-llvm-reproduce/llvm-project/build/bin/mlir-opt+0x3c3413e)
#18 0x000056463445b61a mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/chenyaosuo/exp/newest-llvm-reproduce/llvm-project/build/bin/mlir-opt+0x3c3461a)
#19 0x000056463445be21 mlir::PassManager::run(mlir::Operation*) (/data/chenyaosuo/exp/newest-llvm-reproduce/llvm-project/build/bin/mlir-opt+0x3c34e21)
#20 0x000056463444c2cb performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#21 0x000056463444d784 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
#22 0x000056463444d934 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
#23 0x0000564634533ff4 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) (/data/chenyaosuo/exp/newest-llvm-reproduce/llvm-project/build/bin/mlir-opt+0x3d0cff4)
#24 0x0000564634446d57 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/chenyaosuo/exp/newest-llvm-reproduce/llvm-project/build/bin/mlir-opt+0x3c1fd57)
#25 0x000056463444dc5b mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/chenyaosuo/exp/newest-llvm-reproduce/llvm-project/build/bin/mlir-opt+0x3c26c5b)
#26 0x0000564631b6b7db main (/data/chenyaosuo/exp/newest-llvm-reproduce/llvm-project/build/bin/mlir-opt+0x13447db)
#27 0x00007f8ff8de6083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#28 0x0000564631c0229e _start (/data/chenyaosuo/exp/newest-llvm-reproduce/llvm-project/build/bin/mlir-opt+0x13db29e)
Aborted (core dumped)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWl1z46jS_jXKDRWXhL4vcuF14nqnalJJJXn31oVQy-YsBh1ASby__pSQbAvZzji7M96dPWcqk9gImn6ebrobBNGaLQXAjRf_4sW3V6QxK6luiJBis5aNvp89XxWy3NwsmUGvoDSTwgunqII4TP2yjH2IsirDKSEAeRVXJPMhjYMiSOOc4Njzbz1_2v3WG21g3Y72Ev__i0aYBmF_4keTBH19eUYezuaSEo7mUmvi4dxL_OF4BbWSZUOhRG_MrLywb_cSf82Zupa1QdfXVIpXUOZ6DWsF1bWR17pm6hWRCR3JI5N22FBM_9N9xTHhXNIF9pEX3qJO3sS2eTjzcI5aKF2zF878dxZ4eIY8HNoJJ9pIRZawoJxo7YWz5-77L01VgfLCu_ZnOxMl2ixwMJyobUKuEn9yNmTkXoAXzv-4wiOm7G-jCIVTZG7tY42P5yUxxMNzugKxIVI30sNzeK89PBfwBtpcc_66vt7Z28Nz21Ar-S-gxsNzazg856zw8PyWEd41Pz9-efrVw_MvT9svL5sa9ITWtRdOE7-dXhtiGEVb04dTC777OFWKbNoh33jcfV2C8XC272mf4BlqhF1TJWLCHH7PWyWmWoMyTIp2KQCHNQgzk41oLZ54OEEexntlBECpETGIQ-sUUgDqx3gYezhFFWEcyknH9ePXu-nzHdJNsWYGEVQ0S6Sglsq0DrAyptatvnju4fmSmVVTTKhc9xwfUs20bkB7eI6IaCFQ3pSAzAoQVUSvUEHob9b2_fTPhtDfUNms650z-BNk_z0quVRkjYhaNq32-nu5Q9EwXrZ_meid45vBwJrNatcuAB_5777v-3ESJWFAQz-pKmT56Hxgo7sPj4oJYxG-WHfH2b6TIm8LqY0CsrZGnPX2RjZa_CiQHv7Ffw8iP0-qqnWuHaTAhYTLPIvQM1sKwv-PiJKD8nDWa9g1b9eJb__vBOFeUFplVZWHSRZhHy0WCtp4AQtleoDdYnzPkkUSXXMmmvfrpWi6B7VZKSDlRMuJ32scYd_RNxxOk4Ef-36BFGEazpBPW8mJlRyFvl84kiNHcglRFueIFPIszQeSMc7i3JEcjyWnO3OfLTPFrszElVnFVZl8TmYYVmXiyEyHvhDGRQRh8SND3AVcHpdZCaFr6GwIM4Y0SdIQaVN2ui_mjaBtzF2sev8PZ7uHsm6fEO6Fsz3ar3LJKOFPoBtu2gR6lIt9BHheE85_BWqk-rKuXVkdp3d9ZNiPsYQ_2ZR8pHPedt4pCYIUHBas7cz0golXSW3LqzN6l_hmXfSD0-1DPAMveCFqCeZOvE6NUa0KI-GdgLYWfLC8aUSl0MaCy7t-Hk45WRclSTycOvPcw_oJqo693BU-fPRDiW37D4ites_4KTyiU9-2GrdUOWLzN0XqGeG8zdKOQJfq_0oX-58TuE7wk5q3JST7SXW3xf7hqI8GXcCz_ul0Xm6J2rrj3obR39rdwr4YmYrNoq2PBmBnaKxicjDp91e0pwyNbHF8L5APK6woKnNM_I9jT78D6_B8FxtcoroMaYEx2W9Q2v2UP8JeJFE6wF6CIYx3n_c0PhJjQIkneFPMQA_M7hZhTepfCbd768Eu8tkoJpattYa56UQeoqRLWHeu84wmPXAuO-0TEctPWMCOubAJoiRKHRMEYxOQmAxwHdDeNa-JoaupKHs-HDd8qEF1JOLpt0nMu9V6IfQkJg56PESf-iQMIDtUeFrXnFFipPre6Ieusi2WFt1pYiEld8ugXoAby-8-FPIqWfmnhZwo086Tewm_TrKUBpA5lg1dvwYCgVVldwyPBFmDru2RUz6y3VdYEs5-3wZc3n8909AnQ1Xv8P3h6keJoUUQjRAUKUnPRnA8ZeweuwHyaDZz8H3azW4ZWQqpDaOOL5wJPR5BL2kQDQgmdc03j0QZRvhe1Ket01VRB6F8ruTvsLVZb8FnME5VsWfiFoSGZzCnuTvsfk_qL6KSHw5pKd1uq6eXSg80oUHkLKPEOeaipCBh_C0n7H2vryOlrYIe7fsPm6Ub8SAGaO1rn4O-x_0idf0iLoIQTtQLD_WLfKhbUdOS1LvQrRoxCltaH7jIaeeZCsI3mul7IsgSbOndxum_5rwupGEUhODYKxszlATk0ww9sho4E-N413bdAU--O2VurtT6i9BG2ZcaUh1JpsMOfc1mH_S6PxIFwrTLbLtwL7aKwigJ3DIjH1sFcDACs6XnqJe67F4KBeBgiAKPqvWIYlqgGlQl1XpKD9PK4dubXfGtV0RBuaiN8sLZoFqWjaJwv1ReeHdiF3f_9cvTTAoD7-bAKe45Uw-1uSeszX8VWw6rETR4ejS64FEpHJVpFqFaSQpa929sz4TXCPbvBg7g3cNaqs1W1KB_CRVpuFmUwMHA6TG7Y9bzMA_79Zn3CZZMG7U5yGMv9m3So12Z07PowmO68nCYpN1a8Y8Ul5ej87RR92cOtD_tW1TCPfDb8_Q3dI_jZj9zyRw98_nbWAVnXIrlZYn9QKVvLxh3SxKHYVVFzitDzsxUlI-jiPNXoPsJF-mHPfY1R_f3Iim09GlVOeU0Hu3poqSM0-Or8Z8WSy5SswRVGTvHWzgeJykaFycJ78tQuiJdwTnauznniB_Tchm4OKFx4cB1tmtBkRRpWaA1YeISN2bCKEpLV590dJsj8bMQLRacFXShDVFmMVDu3PsdkZ-FziyZey_HxzgH1Mm_CO6ywPl-GzYtpDJgz0OoVGDvbUG5V3h7je-qvAnLPMzJFdwESR4EYRQH-Gp1k5M0I0VUAc2LlGZJFKeY0ChPiyrDYYav2A32cehnfuSnYRzgCSElTjJa-TjOyyTAXuTDmjA-aVFMpFpe2StnN0kU-fkVJwVwba-nYizgDdmHHsZefHulbizyollqL_I500bvpRhmONycvgNmr6_1d0kR2V3IqwjjjYJP3MC7ahS_-eP36izO_wQAAP__e-eW-A">