<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/122227>122227</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Mlir] --affine-super-vectorizer-test="vectorize-affine-loop-nest" crashes in VectorUtils.cpp:145: AffineMap makePermutationMap git version: e4372c4454c9
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir:affine,
crash
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Emilyaxe
</td>
</tr>
</table>
<pre>
system: `Ubuntu 18.04.6 LTS`
reproduce with: `mlir-opt a.mlir --affine-super-vectorizer-test="vectorize-affine-loop-nest"`
a.mlir:
```
#map = affine_map<(d0)[s0] -> (d0 mod s0)>
#map1 = affine_map<(d0)[s0] -> (d0 floordiv s0)>
module {
memref.global "private" constant @__constant_17x18xf32 : memref<17x18xf32> = dense<0.000000e+00> {alignment = 64 : i64}
memref.global "private" constant @__constant_17x18xi32 : memref<17x18xi32> = dense<0> {alignment = 64 : i64}
func.func private @func3(%arg0: index) -> (memref<17x18xf32>, memref<17x18xi32>, memref<17x18xf32>) {
%c18 = arith.constant 18 : index
%cst = arith.constant 1.000000e+00 : f32
%0 = memref.get_global @__constant_17x18xi32 : memref<17x18xi32>
%1 = memref.get_global @__constant_17x18xf32 : memref<17x18xf32>
%alloc = memref.alloc() {alignment = 64 : i64} : memref<17x18xf32>
affine.for %arg1 = 0 to 306 {
%2 = affine.apply #map(%arg1)[%c18]
%3 = affine.apply #map1(%arg1)[%c18]
affine.store %cst, %alloc[%3, %2] : memref<17x18xf32>
}
return %1, %0, %alloc : memref<17x18xf32>, memref<17x18xi32>, memref<17x18xf32>
}
}
```
stack trace:
```
mlir-opt: /data/szy/MLIR/llvm-release/llvm-project/mlir/lib/Dialect/Vector/Utils/VectorUtils.cpp:145: AffineMap makePermutationMap(ArrayRef<Value>, const DenseMap<Operation *, unsigned int> &): Assertion `perm[kvp.second] == getAffineConstantExpr(0, context) && "permutationMap already has an entry along dim"' 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/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt a.mlir --affine-super-vectorizer-test=vectorize-affine-loop-nest
#0 0x00005590fd797ce8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11f2ce8)
#1 0x00005590fd7957fe llvm::sys::RunSignalHandlers() (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11f07fe)
#2 0x00005590fd79867d SignalHandler(int) Signals.cpp:0:0
#3 0x00007fe98ff96420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#4 0x00007fe98f5d300b raise /build/glibc-LcI20x/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
#5 0x00007fe98f5b2859 abort /build/glibc-LcI20x/glibc-2.31/stdlib/abort.c:81:7
#6 0x00007fe98f5b2729 get_sysdep_segment_value /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:509:8
#7 0x00007fe98f5b2729 _nl_load_domain /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:970:34
#8 0x00007fe98f5c3fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#9 0x0000559100095e16 mlir::makePermutationMap(mlir::Block*, llvm::ArrayRef<mlir::Value>, llvm::DenseMap<mlir::Operation*, unsigned int, llvm::DenseMapInfo<mlir::Operation*, void>, llvm::detail::DenseMapPair<mlir::Operation*, unsigned int>> const&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x3af0e16)
#10 0x00005590fd8d3e0c vectorizeOneOperation(mlir::Operation*, (anonymous namespace)::VectorizationState&) SuperVectorize.cpp:0:0
#11 0x00005590fd8d3549 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&)::$_0>(long, mlir::Operation*) SuperVectorize.cpp:0:0
#12 0x00005590fd8c3228 mlir::WalkResult mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x131e228)
#13 0x00005590fd8c31d7 mlir::WalkResult mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x131e1d7)
#14 0x00005590fd8d1b6f 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
#15 0x00005590fd8d18a2 mlir::affine::vectorizeAffineLoopNest(std::vector<llvm::SmallVector<mlir::affine::AffineForOp, 2u>, std::allocator<llvm::SmallVector<mlir::affine::AffineForOp, 2u>>>&, mlir::affine::VectorizationStrategy const&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x132c8a2)
#16 0x00005591008c6353 (anonymous namespace)::VectorizerTestPass::runOnOperation() TestVectorizationUtils.cpp:0:0
#17 0x00005591006f2496 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x414d496)
#18 0x00005591006f2dc0 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x414ddc0)
#19 0x00005591006f831e auto void mlir::parallelForEach<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&&)::'lambda'(__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>&&)::operator()<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&>(__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>&&) const Pass.cpp:0:0
#20 0x00005591006f473b mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x414f73b)
#21 0x00005591006f25ef mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x414d5ef)
#22 0x00005591006f2dc0 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x414ddc0)
#23 0x00005591006f56c2 mlir::PassManager::run(mlir::Operation*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41506c2)
#24 0x00005591006edaea performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#25 0x00005591006ed73d 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
#26 0x0000559100794785 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/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41ef785)
#27 0x00005591006e7755 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4142755)
#28 0x00005591006e79ff mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41429ff)
#29 0x00005591006e7d2e mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4142d2e)
#30 0x00005590fd776a67 main (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11d1a67)
#31 0x00007fe98f5b4083 __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:342:3
#32 0x00005590fd7765de _start (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11d15de)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsW1tz46ie_zTkhYoLga4PeXCcuLarOptUp2f2UYUFctggoQWUtufTb4FkSXac20z79Dkzmcq4LS7_2-9_AYSpMWJdc34BoksQXZ3R1j4ofXFdCbmlG362Umx7YbbG8gqQOQQx-m3V1raFQTpD4SyGX7_fgxgBNAdornmjFWsLDn8I-9CPr6TQ56qxkM7cV3h-TstS1PzctA3X50-8sEqLP7g-t9xYQK4AxkPjbqxUqjmvXT_GA7uOoGeD5q7V__kHTCraQECuYEcgr2gDyALglCGAMxBdGgSiK3gOyDX0rbBSDBrfSa4HEsHHaJRSKc3E05RQpVgrOQTJJUBzCCteaV7O1lKtqIQA40aLJ2o5wBgWqjaW1haCEOX57ikPkk2QbkqCodO1IwDIYmj2_MkVZLw2HJAFmiH_Hwf4EiHfm1xSKdZ1xR1xcgXj0NMScQiSq78mlzgulzgi1ztFKdu6mLkP2Mvg-LpnAnAKcET1GvkpNeMbgLMBgaOmAXhxXLYjHbsZ2QAXhABHRZB2fqCFfZgN1vCtOzHGwcYeHbwHip_ouA3TkJ-0Q4HbfIfER00-kgw-QPJV7xpJUilVMSXrGzws2RvQvkm-i7JZqTTsQO7kR9AqSFA8gcSLgiehOaNNI7ewi9nBSYIuSjsAQXQ1nU1emh28Pb2fZazSvEfc-dLOPN0c0jdhlyLetGyyo665bXXt0esJoCntVyh93M0dx45z_9n9TROpsbR4hFbTggNyOMAltz65-ySMl4xaCvDS_LEFeHnz9cs3gJdSPlXnmktODd89Nlr9Ly8swEufwfFSihXAyytBZdf8uy8AAC9_s0KaocE_zYqmAWQehJHjOvdg3NAGVvSR33FdtZZaoeob7wlzren2m9f9dypb3hvEez-8conpxmf124ZrPw0CPHcj2toXRgZFbbv0EvuUPodzY7juhsao4boC0eXjUzMzvFA16-C-ct615raTbtHH2vWm0QCnqJfA8o31ceNIxz7n7okPqdScsi18oAbSGvLa6i2kUtVryETlSiFOYEmF5GwG0Pzu6_X8_hqadlUJCylctWuoeaO0dSH0YG1jHIh4CfByLexDu5oVquoxeQ6NMKblzvaQ1s4MhWwZh_aBw0JT8wBXtHj0nuF433tHYW3VdH6CZl2s3Gm11rSCVK9blxfMn_aUVSskc_-KuvebD60qXllSICcRQRBtXIKOogyVLMmSgqfQW4bMAZmbrem-3GlRW6_udx8WOB0HafojV8ZqTisP6sJ7j4c4_YlKuxKyCYISF9wl3l6B4ECBKCn5MQW-tfW9WNdU_hetmeTa7NL3SWRESclHGfGBjGmcMLgnDcBpb7OueRfuyP_fUSE9laTkWVqWWRxiBPNcc5-Sc217XbqssknjPA7Ppajbzfm6bruOxj644JoZNUOdrGGI0ShpuMcjYgShFdRUGJfyB53XUqyK86_FF4w2wyOekcCZ0MsP8HI2c09bw3jjwqmtxaZrePKi1K179KRnBSDzKHDZrRcj2hdjhdMog3SlvI7vE8Oyzg5-lueQOg5JzyE-5JDgzKWuvJM4N3ztAjd_cunzvUxFbZ3mUlFWmXVBO74Rcgk07RknxxjntczdrJypior6r_HLEuc1JOwZpvsMC1Ky-B2eUjgfib2PEDdl9JFs9OYAIZRFPIhhvycBZH60II3dl1IVj321GcN0UrDGodPSNQ6dlK9x6FDIjtWxo9O_1KV6lcSTEuwZc8YtFXKf0h11JN4rDLl2ddVX4q64niIDEVoiHvSYuSS5n-ZTRjgq4FAcbms-kTl9WROAU1qrelup1sCaVtw0vhhkPWA9QT_l3vp9lFfx3pWnXS8_yG1OvuBQvijMJj71P1Q-fuOmlXaChdsbOUa5PvCbyehXtPEbVd9eUCldWc_LGpDFYJWvSjX_7TffqbGsG9p1ArIYxbivqJS_79pHbl3B7d3bf18qfds4M-K2d6yBrl_m0p9GuvvravHxaQdQaWr5ejt1y24YwGGOPK3ULcD26R3Y822U9-tgWhCM0-Moj43TiPtB5eOeIZZK_6CafbFOEGek61fd9-f6zp4t3LxbzVwlP82aggQc43SMaHJoy4Aln7Z8ty0Dloy2DA-yT7CKS_iZB96Zu6ND66UUv8BtsGkn7T_csidxbVykFI-uHe8t1tIiJhF5bxnn-js39o6afgul2_q2ni4UnBJuyJ6q09OKqZske5LEJQ6z-IXcdNt8V7eNYzxntPHY9Pz38oiXrMtGL-epsWdeU7k1wtzQmq5dclnAlVLy-XLxJMiEQcjCbLIkSw_twQr0YXvciYZL53L7-dUNHdSMf7qBppMcqy-1sdofdCj9jOr-gI5z19HLfkc1r61bj--iY35CDFiBRgyyAwxSEnBIW6v86n-iREM1lZLLpdLXtHgAZJHn67rNi82mG5DntdIVlbkY6ufio2BOgmtutnXxpWokwGmHQTZge-O3Lp2Zn6fN0zJ9IaGelOmYbRcfjo_3MJqscUfyztUWu8NKb-pPwH8F4J9W_3uFmT_0n7QlklYrRgFOAE4_wf7Xg72Hh2p6Q3c7zVNrHndZ9xP2XwZ7_0rQEX6-ZMfoYHkUJmT1k3PDiZZ5ZUJWwzIPB4dL7YiX_7CtR8TL0R74c-vxq7cemBxgEMUFPhB9Z4yjHnh4-HoSmSMUF-NhAg73ZeaMcgobrkulq7k_AzRvvBgeUp55oJqzvLEH5zGq1QW_Wev9lyRTUJ-vzCd9Uujbxt5QUS9UXYr13nnLpPdIsosOlUsIm5xyflVrUVD51luIlyZMj7jaWvxfy5_pfsMrpbeXbVl2ATCMZ7ykrbQ545Jb_vKcYfn2MgIvvfQ4asL3YnlyfUbp-rsy3_haGKu3z53jNQd4tt3bvdL4t0DmDffcP8hLsjBJo4nippHCzmt2p1XBjdnJ-kuc7j8wJF4dMe27t1rU62-umr7QfKJUzMskjcZUfHCaypMkio7Hwd8tik9UnXESTcybHpo3K8sXzdsvTIoH2i1B5h91mbdsczKds3KyKswOdWaY_xSdf5FyDPNBucN7bklM4wT2d21OcAGMBTQeXzAOl9R2l35ClBKY51KsitxYqm3-kWs_hWl396u6r77T0_EXgEiI3WfPGx9qHjEOO66n0j1iO8sPt2rP2AVhGcnoGb8IEhKHKA2C-OzhIksinqGYpKsUp9kqyFDBiwAlK0TjiJT0TFxghCMUoAwlJAriWYGyMKNZmZKEM84ZCBGvqJAzJ-RM6fWZv8N5EWCMcXIm6YpL43_pgXHviv17OowBXgCM_c1O9xRdnekLr-uqXRsQIimMNSNhK6z0PxpxweB_BfFXf9bR3SrlBooa_qnbvnAtLHzi2nSbG8hDkuAiDKOwyM5aLS_-_A3Y3oBPF_j_AwAA__-RDtG_">