<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/128277>128277</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[mlir] Crash when using --affine-super-vectorize="virtual-vector-size=128"
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
wangyongj1a
</td>
</tr>
</table>
<pre>
I have the following MLIR program:
test.mlir:
```
module {
func.func @func1() {
%idx0 = index.constant 0
%alloc_82 = memref.alloc() : memref<1xi64>
affine.for %arg0 = 0 to 78 {
%dim_191 = memref.dim %alloc_82, %idx0 : memref<1xi64>
}
return
}
}
```
The above MLIR program will cause a crash when using the following command:
```
mlir-opt --affine-super-vectorize="virtual-vector-size=128" test.mlir
```
And the crash backtrace is:
```
<unknown>:0: error: failed to verify 'elementType': integer or index or floating-point
mlir-opt: /data/tmp/v0222/llvm-project/mlir/include/mlir/IR/StorageUniquerSupport.h:179: static ConcreteT mlir::detail::StorageUserBase<ConcreteT, BaseT, StorageT, UniquerT, Traits>::get(mlir::MLIRContext*, Args&& ...) [with Args = {llvm::ArrayRef<long int>&, mlir::Type&, llvm::ArrayRef<bool>&}; ConcreteT = mlir::VectorType; BaseT = mlir::Type; StorageT = mlir::detail::VectorTypeStorage; UniquerT = mlir::detail::TypeUniquer; Traits = {mlir::ShapedType::Trait, mlir::ValueSemantics}]: Assertion `succeeded( ConcreteT::verifyInvariants(getDefaultDiagnosticEmitFn(ctx), args...))' 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/tmp/v0222/llvm-project/build/bin/mlir-opt --affine-super-vectorize=virtual-vector-size=128 test.mlir
#0 0x00005568e5168a5f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/tmp/v0222/llvm-project/build/bin/mlir-opt+0x167ba5f)
#1 0x00005568e5165ab4 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#2 0x00007f051bcda420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#3 0x00007f051b7a700b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
#4 0x00007f051b786859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
#5 0x00007f051b786729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
#6 0x00007f051b797fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#7 0x00005568e82b4fc5 mlir::VectorType::get(llvm::ArrayRef<long>, mlir::Type, llvm::ArrayRef<bool>) (/data/tmp/v0222/llvm-project/build/bin/mlir-opt+0x47c7fc5)
#8 0x00005568e52c336c vectorizeOperand(mlir::Value, (anonymous namespace)::VectorizationState&) SuperVectorize.cpp:0:0
#9 0x00005568e52c38b9 widenOp(mlir::Operation*, (anonymous namespace)::VectorizationState&) SuperVectorize.cpp:0:0
#10 0x00005568e52c85e8 mlir::WalkResult llvm::function_ref<mlir::WalkResult (mlir::Operation*)>::callback_fn<vectorizeLoopNest(std::vector<llvm::SmallVector<mlir::affine::AffineForOp, 2u>, std::allocator<llvm::SmallVector<mlir::affine::AffineForOp, 2u>>>&, mlir::affine::VectorizationStrategy const&)::'lambda'(mlir::Operation*)>(long, mlir::Operation*) SuperVectorize.cpp:0:0
#11 0x00005568e52b43c0 mlir::WalkResult mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) (/data/tmp/v0222/llvm-project/build/bin/mlir-opt+0x17c73c0)
#12 0x00005568e52b4442 mlir::WalkResult mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) (/data/tmp/v0222/llvm-project/build/bin/mlir-opt+0x17c7442)
#13 0x00005568e52c5433 vectorizeLoopNest(std::vector<llvm::SmallVector<mlir::affine::AffineForOp, 2u>, std::allocator<llvm::SmallVector<mlir::affine::AffineForOp, 2u>>>&, mlir::affine::VectorizationStrategy const&) SuperVectorize.cpp:0:0
#14 0x00005568e52cab98 vectorizeLoops(mlir::Operation*, llvm::DenseSet<mlir::Operation*, llvm::DenseMapInfo<mlir::Operation*, void>>&, llvm::ArrayRef<long>, llvm::ArrayRef<long>, llvm::DenseMap<mlir::Operation*, llvm::SmallVector<mlir::affine::LoopReduction, 2u>, llvm::DenseMapInfo<mlir::Operation*, void>, llvm::detail::DenseMapPair<mlir::Operation*, llvm::SmallVector<mlir::affine::LoopReduction, 2u>>> const&) SuperVectorize.cpp:0:0
#15 0x00005568e52cbd0a (anonymous namespace)::Vectorize::runOnOperation() SuperVectorize.cpp:0:0
#16 0x00005568e8109d31 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/tmp/v0222/llvm-project/build/bin/mlir-opt+0x461cd31)
#17 0x00005568e810a1da mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/tmp/v0222/llvm-project/build/bin/mlir-opt+0x461d1da)
#18 0x00005568e810a56e mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::'lambda'(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&)::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const Pass.cpp:0:0
#19 0x00005568e81091bc mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) (/data/tmp/v0222/llvm-project/build/bin/mlir-opt+0x461c1bc)
#20 0x00005568e8109a7b mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/tmp/v0222/llvm-project/build/bin/mlir-opt+0x461ca7b)
#21 0x00005568e810a1da mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/tmp/v0222/llvm-project/build/bin/mlir-opt+0x461d1da)
#22 0x00005568e810ad74 mlir::PassManager::run(mlir::Operation*) (/data/tmp/v0222/llvm-project/build/bin/mlir-opt+0x461dd74)
#23 0x00005568e80fc3cb performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#24 0x00005568e80fce32 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, llvm::ThreadPoolInterface*) MlirOptMain.cpp:0:0
#25 0x00005568e80fd0a4 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&)::'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
#26 0x00005568e820195e 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) (/data/tmp/v0222/llvm-project/build/bin/mlir-opt+0x471495e)
#27 0x00005568e80f3cb9 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/tmp/v0222/llvm-project/build/bin/mlir-opt+0x4606cb9)
#28 0x00005568e80fd211 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/tmp/v0222/llvm-project/build/bin/mlir-opt+0x4610211)
#29 0x00005568e80fd6d6 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/tmp/v0222/llvm-project/build/bin/mlir-opt+0x46106d6)
#30 0x00005568e508403b main (/data/tmp/v0222/llvm-project/build/bin/mlir-opt+0x159703b)
#31 0x00007f051b788083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#32 0x00005568e513937e _start (/data/tmp/v0222/llvm-project/build/bin/mlir-opt+0x164c37e)
Aborted (core dumped)
```
My git version is 93b2e47f12649bd33b99b88f25beb277a181274a.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWltzozgW_jXKiyouIcDAQx4cp12bqs4mlWRnH11CEljTILGSyGV-_ZYEDpckbfeMZ3Z2aqpc3QSd63cuOgiIMaKUnF-A-BLEV2ektTulL56JLF-VLH8OyFmu2OvFNdyRJw7tjsNCVZV6FrKEN1-v72GjValJDcIVQCvLjV3UldDdn2CJ-h9a1Yq1FYcguQRoBWHRSrpw_0AQIfd_AHAKcPZGACHAsWAvCILwCgrJ-MuCKmkskRaigYRUlaLbFHuymteaFwt_by8vXPW3QbgOXsQyAuGXnp0UhZB8USjtJemyU4agVTBJR6Z4TUzU2yALxoqYqMc2ALweWf25XpBc9Vea21ZL_0d3s_93BNzjjkOSqyc-wRs-i6qClLSGQwKpJmYHn3dcwta40EwDRVVdE8k-CEol9LlqLDw_77A4N23D9fkTp1Zp8QsH4RXA-Elo25Kqv31uuoXAAYzhEPOp7JVk3ozOtpzQb1YTyqEw7-0A4bqV36R6lg6kcIUcelxr5RIJFkRUnLmgPHEtilcIcMIrXnNpH18bDnDiqIS0vOQaKt1li7soKkWskOV5o4S0I4cdA8AbRiwBeGPrBuDNE8IYA7ypqqf6vNHqZ04twBvvGt4ISauW8eHG9T3AmwerNCn5v6T4T8v1Q9s0StvFDoSrIMmcEmOJFRSulaSaW_4I99URrhi3RFTd9V6O4fqSGA7C9RuHSyp3z1_0dP66V-qvHzUR1nTggXBVcgtwOqhymbNW0vIXC_DKMax0aQBeAryEi8XCF0p8-Szszq_4HAfJpYOik7DSmrze-2SulCwd2k6bk7Ae-dTFw9_8kDdXqur5kisQXo6A8WX1Jugnn2peXHjZ-T-j2K_tIZktj9EdhPXEjm8P33f4HEdP5jg6kPfYDCwPO9Jw1tnj2RzdFJefSNXyB14TaQU1zvf4yqXHyhiurVASgiUyLaWcM84ATgdgOgFd5l_LJ6IFkdYAnJbcXvGCtJW9EqSUylhBv9TCbiTAKbUvAGfOCKJL04XY_5K-nBYAre6-flk9fIGmzWthIYF5W0LNXQq7YttZ2_haxRuAN6WwuzZfUFX3JfK-UoQxLTcAbyCRDPYF81EPcLofLKHfIGvrpmsHaNE12ru-vxFdtq7CzQ-Uat6Kirn_hezr9FBz-7SzTdoaBDhEEL0ghFAcL1MeB8uUxMUox82r6S7utJDWO_foXAU4HYg0ed4qYzUndV8kroxc7blW-htcBPgSvQTLJCdx4aLcmRzMTI5JHsEHUUpS_YNIVnENcOotWEMjSiELtd33hyclmL_Meg6zoE3Tt2bUK8C9gqRAcZBTRiKM4HarubFK8622vWOVyAHevKTL7TI6r4RsX85L2XYLjd1pTtjCqAXq3IgijAYnwomOhCQI5VATYfgRwqkTu_RioxChfBAbTcWmyzTO3DZ7lM0jsRincTaIjedik7foHi0wwSOBy6nALCnY8scEhmHBloPAZJwUKc6jgsaf9N1hJ_l0H_C9_P0GcKj7nyjjo4QmBY0H59JJxmMahksK3-r9tuHajUHjndE35m5uS4lU8rVWrYGS1Nw0vnyzMS7iF-Ka9YMlttvmMvjgesp-lX9QJNncpjTP4LNgXN42E1O8eU58X4K_i0WuLaCZRWnM01EI_02qb_fctJUdRdGN6E7RthtoP6T-jjfZ22hCSVW5jWBbSBCu32LzVanmn9y4ZDOW7fc8t-gy7c2Mh5pU1U_7-4O2rsH3CeevN0o7fNcQt32Svsn14zo5mejuN5-ExmyzUGliefkK_dNMF7OODOCkInXOiJtoD2CJU19-E5UzssOJMN0gcB6FFH2cCB_PR8-k-jbBaqP0M9Hs2jpDHI5fvpvhp02vCRaO71Yzt8WdantNaBLSfmdy6OE5elGE_0bvO-hFER7QC2dNKI7CEP7dDo5s4dEMPZJn6RQ9c2TuXHFp-AO3EycPkN-Q5loW6rssfoAcY3Fohjh-fW_DkSYfE0mH2D1nLe0kjNLkN7g-4R5X_l7SHRH693fC_34sveJZeuUMkWPnkd4Y3cpbOfInPUrxcjKdBihjYfBJ-7xtHtVtc0eMWTHSeFx6vZPMdwQ9mp_jPKysJKlejTA3RJLS9b819FMrXsNW-rNSdtKHtmgZUBYGQ19MZgiQgJEfRuBONLxyeTHtAY70zbHlySEZMzlV19JY7R_ilX4ndUrQae4WetvviObSumLb5-7qlKizwM1Ze9TTOerxkv8w6qN8X5lXSa_rpgI47cA6NOOdTsVtc3fje9RotFRNP1P4OvxDFHdRg07YB4WezQs9yOmJAT9dgQY5fUsVjOaWkyT_y7cokuQDAsHfLeqPb1EYz1FnSTQzdu_-h1k2fzo8mZUsiQYrJ2N9igoa0hw2XBdK1ys_mJgDR6Jvc7nZEc3ZtrGzwVy1mvKbUk-nmnHg3r_uGK1VQt829oYIuVayEOVkMhqtvm9aOJo7x0MMG60oN-ayLQp_oHqUb61_q_DOtxteK_26FzWiZ91B_5bxilv-OU8_cB_r8JjuSpCKU3vPS2Gsfn03tT_6c9o7paprabku_Oy3OgxaPAONIRKNxH5VpaCkOnTg9BnD-AHxdwf189B-dr71YRj-hEnycfCPrJoPJ5s_TVSGk7I_hUkHqmX6AIRRkMXjQdQ0lbArye5mTed_4dr_YYV-l2LyuG21kOU9Lz69fbJXGEGUxXzYQJNZuwxpnn1ciH-1NnKqiQQtaZ4NgKbz_QcHwaeA9kMi3ZFuHJyfwhxMi0NonG7uQjgYjg1wNvdyyZYn8fIPc2e5f0sJcDh7247SCIU5rImQJzqNjrMEhcMjzdur8v172xSlIdxuK5HTrbFE2-1I-bFvciOUhoOK6euCIMzChMNO-Kne_0c0TPpWssqVtpw5yVRp7j-04Ky3ZvTl1c0rLIWFT1wboSQUBmZhjnmUFAFeRlnOwjDPsjxNCxznPMdJQoI0wElEFmfsImRZmJEzfhEkEQqyKMH4bHcRpBilnOIgTciSBohFSRoRzBDPaMEDdiYuMMKxcxCFOMZ4kRQkw4SQBCMWZjkCEeI1EdXCeb9Qujzz35ZcBDjFSXJWkZxXxn-ziHH3ORYG8dWZvvBo5W1pQIQqYawZJFhhK_-do2eIr-B6_tHcr_8I7qzV1cWv_16md-vpAv83AAD__3M0xf4">