<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/116536>116536</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[mlir] -affine-data-copy-generate crashes
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
wwy6191
</td>
</tr>
</table>
<pre>
git version: bb89988174e5
system: `Ubuntu 18.04.6 LTS`
reproduce with: `mlir-opt -affine-data-copy-generate a.mlir`
a.mlir:
```
#map = affine_map<(d0) -> (d0 + 1)>
module {
func.func @loop_nest_seq() {
%alloc = memref.alloc() : memref<256x8xi8, #spirv.storage_class<StorageBuffer>>
affine.for %arg0 = 0 to 32 step 4 {
%0 = affine.apply #map(%arg0)
affine.for %arg1 = 0 to 8 step 2 {
%1 = affine.apply #map(%arg1)
affine.for %arg2 = 0 to 8 step 2 {
%2 = affine.apply #map(%arg2)
%3 = affine.load %alloc[%0, %1] : memref<256x8xi8, #spirv.storage_class<StorageBuffer>>
affine.store %3, %alloc[%0, %2] : memref<256x8xi8, #spirv.storage_class<StorageBuffer>>
}
}
}
return
}
}
```
stack trace:
```
mlir-opt: /data/szy/MLIR/llvm-release/llvm-project/mlir/lib/IR/BuiltinTypes.cpp:531: unsigned int mlir::detail::getMemorySpaceAsInt(Attribute): Assertion `llvm::isa<IntegerAttr>(memorySpace) && "Using `getMemorySpaceInteger` with non-Integer attribute"' 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 -affine-data-copy-generate /data/szy/MLIR/seed/seed0/tmp.a0UEXgbAEi.mlir
#0 0x000055ee23447008 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x1111008)
#1 0x000055ee23444b1e llvm::sys::RunSignalHandlers() (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x110eb1e)
#2 0x000055ee2344799d SignalHandler(int) Signals.cpp:0:0
#3 0x00007fe02d0ea420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#4 0x00007fe02c72700b raise /build/glibc-LcI20x/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
#5 0x00007fe02c706859 abort /build/glibc-LcI20x/glibc-2.31/stdlib/abort.c:81:7
#6 0x00007fe02c706729 get_sysdep_segment_value /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:509:8
#7 0x00007fe02c706729 _nl_load_domain /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:970:34
#8 0x00007fe02c717fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#9 0x000055ee2678c3a5 (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x44563a5)
#10 0x000055ee235a35fc void llvm::function_ref<void (mlir::Operation*)>::callback_fn<mlir::affine::affineDataCopyGenerate(llvm::ilist_iterator<llvm::ilist_detail::node_options<mlir::Operation, true, false, void, false, void>, false, false>, llvm::ilist_iterator<llvm::ilist_detail::node_options<mlir::Operation, true, false, void, false, void>, false, false>, mlir::affine::AffineCopyOptions const&, std::optional<mlir::Value>, llvm::DenseSet<mlir::Operation*, llvm::DenseMapInfo<mlir::Operation*, void>>&)::$_0>(long, mlir::Operation*) LoopUtils.cpp:0:0
#11 0x000055ee2354fa9e void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x1219a9e)
#12 0x000055ee2354fa9e void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x1219a9e)
#13 0x000055ee2354fa9e void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x1219a9e)
#14 0x000055ee23598705 mlir::affine::affineDataCopyGenerate(llvm::ilist_iterator<llvm::ilist_detail::node_options<mlir::Operation, true, false, void, false, void>, false, false>, llvm::ilist_iterator<llvm::ilist_detail::node_options<mlir::Operation, true, false, void, false, void>, false, false>, mlir::affine::AffineCopyOptions const&, std::optional<mlir::Value>, llvm::DenseSet<mlir::Operation*, llvm::DenseMapInfo<mlir::Operation*, void>>&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x1262705)
#15 0x000055ee2354f4b8 (anonymous namespace)::AffineDataCopyGeneration::runOnBlock(mlir::Block*, llvm::DenseSet<mlir::Operation*, llvm::DenseMapInfo<mlir::Operation*, void>>&) AffineDataCopyGeneration.cpp:0:0
#16 0x000055ee2354c3b9 (anonymous namespace)::AffineDataCopyGeneration::runOnOperation() AffineDataCopyGeneration.cpp:0:0
#17 0x000055ee2665c8c6 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x43268c6)
#18 0x000055ee2665d240 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+0x4327240)
#19 0x000055ee2666258e 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 0x000055ee2665e8ab mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x43288ab)
#21 0x000055ee2665ca22 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4326a22)
#22 0x000055ee2665d240 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+0x4327240)
#23 0x000055ee2665f832 mlir::PassManager::run(mlir::Operation*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4329832)
#24 0x000055ee266580b1 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#25 0x000055ee26657d0b 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 0x000055ee26704365 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+0x43ce365)
#27 0x000055ee26653135 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+0x431d135)
#28 0x000055ee266533df mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x431d3df)
#29 0x000055ee2665370e mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x431d70e)
#30 0x000055ee23427ac7 main (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10f1ac7)
#31 0x00007fe02c708083 __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:342:3
#32 0x000055ee2342764e _start (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10f164e)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW91S4zoSfhpxoyIlS_7LBRchkF2qhoIaZnb3ziXbitGOLPlIMkP26bckO4ltAgPnkJmzZ6maiW39fd1ft7plWVBjeCUZOwPROYguTmhr75U--_59Ewfz4CRX5eas4hY-MG24koAsYJ6n83maBknIIoAuAFp0v2ZjLKtdCxCjr3krbQuDdIbCWQw_fbkDMRq21qzRqmwLBr9ze9_3qgXXp6qxEJ7S9ZpLdlpSS08L1WxOKyaZppZBSGeu3WS87revcqN1pTHq_m2fMalpAwG5gB1AVtMGkCXAaYkAnsNTQC6hf4IAn8MA4Dkgl13nWpWtYBAk590zhOtWFjP3A0GIhFJNJpmxmWG_AZy64QZtIQQ4okKowsPXrNZsPfMF28Zk0RcDssRR_Jg-8hTgJQSYmIbrh5mxStOKZYWgxgCyvOuez9v1mmkn51ZUB9cpOFsr7ZF1hTwwglZBgqGxrIHhWEIvIxrQM6NNIzawo82L6QdyrAw6PUEK9khpB4SnQB4q-CFUMIE6AIZfA-bh8A_h8BM435EMOwpFy50t3bTBEeqsFAUgunhvM460dj2Zl6hHPCAEPpIQILnoC_Z3o2IIoWa21XL7vKva3xyclcbS4hu0mhYMkMVLLbcBws9wvHLRAeCV-c8G4NX1p6vPAK-EeKhPNROMGrZ9bLT6NysswCsfHvBK8BzglW9_3nJhufyyaZiZFU0DyCIigQNopY-NJeTSwj6uALIomaVcdPcVs9esVnpz19CCLcyVtACnC2s1z1vLfPRYwIUxTFuupItxTqCuMzcUkOWVtKxi2vVxlOO03g_oowKOAY4hwPir4bJyQ4xR-wEcSS6UQqnkaV8G6V4SDHAC15QLVs46Mm8_XS7uLqFp85pbSGHeVlCzRmnr5tK9tY1xguIVwKuK2_s2nxWq7jl9Si03pmUG4BWk0nFWiLZk0N4zWGhq7mFOi2_exj38nbd62dbNzuho1rnarVaVpjWkumprJq353fbOWy5Kd-Wyt77PLy-kl2dgDGNlf0EAr2zdzCj6evmvKl9c8i7r9JMDEwTRI0IIRRFjmIRhglAK93Y3G9Pd3Gourafhi_d9nO4bafo9U8ZqRmvvAUvnhZ0_pO_IBMDn6DEIggChdB_7ACbBRIcwD9ghHT638o5Xkoq_U1kKps02mR1DTMTygI3ExFOq5_MSjgQCOO2Z64q3kxz5_7uBSD9QsmYIl4jRECOYZZr5kJtp22vURY7HNM7i8FRw2T6eVrLtKhp7rxktZ0bNUCdxGGI0kjccwhQJThDKoabceMfbKl8Jnhenn4orjB53j3hGAsel1wLg1WzmnjamZI2bda3kj13Bg5dGtu7RDz0rXFBzMS3YSxKNJUFxGs0hzZXX9HWS2LJjw_fyIKkDSfYg8RQkwXNYMZt1cmeGVW5-Zw9UtK9mgEvr9Hd5uDZVQTvoCLlYm-6xk0PYmRSZ65iVqqZc_jHIeeKciIR7zHSMGSTrMn6F4xTOZWLvMoSsy3jkMvOhi8dJWhAaHWN6hWEUExrtsF0QGEeyiJJoXcAHxctBKHDrX5fcsm6x4WtdGtslzJvGRVb39oAX_XralxdUCJcUsrUEZLlv38Xm4f0FtXSpms3f-iA9ipRccGMzbl2N0oAsp1XDhC1VyTLVOGnMCHQg5BJa3TJ3XVNh_I1T6mmBS9eDsu6mK_yTi3eY7IW_d0TfdCLAQklj-_xjbNk16-SjYiTgP9wMfqL8BZOG3TH7nC6LA82vaXMl1-rFLlv9HF7crbL8UiXMULeIEkpWY0UnXgg_KdV8tfxQPnCeP85_Ubimc9Z5_uGV4Hcqvo1EXin9neryamf4yxcmxfIPzqeRpv-k4tuNLl3qO04exsGcztkoUOAPut5CF_mg6y10hWO65mmComdi2EfC-EgYr0gYx_HcGCdovICKphM9zFOHTaWSm1q1BkpaM9O_7A9Znbhwt_nqXgxbeSPPhSq-jaZtX3KIn59B53MyH06u8YSVguTzd2BlIGX6dqGS0To7joq0iJ8JxzfNF3XT3FJjFiVt_CzthRjZxDXoCXueyn3NQlKxMdxcU0krF1-XMFdKuOtwK-pI3hsSHKdFPPLedEJJiUP0ZkpuecOECxnjLOOa7jSN352jYScHdSWN1X4zSekno44bDNxqK_st1UxaNy22EW5xPDMkOEQjM4zfAOMYRymDtLVqumRoqKZCMLFS-pIW94Ass6ySbVY8PnYNskwqXVMxTC9vtedgni3MRhZXdSMATjszzHfmvfZBpGN6lwkeWPEzQAeIfoP8Z2jaRcNptnw_oMHLzX54521LJS17tD3VHwb_FQb_YP2vNc38N5dBWSJonZcU4ATg9MPYP9_YI3uopifaL_OOrnncRd0Ps_8ys3eLLugGPrh2x2iyUGUpzd85PBxpsZemNB8u9nAwfQ2hGP-fvYZQjEeU4I_XkD_BawgmEzOsU4In0m_5OOiH0x3444g9T8nYe8KJ2CnKA9gwvVa6XhTdztnLX953EdDcU83KrLHjbbk71eqCXVcakMvRDthLC_VBneD6prHXlMulkmteDcaYw0Ht4dgXTfRLSpQP9nQ-qYoXVHxmphX2-Y3g5zoAnO7UbyX_rWVP1O_OovQHh4Z0lWxNW2Gzkglm2fN9dgu6543w46-GA55ea86j67OX7oJTwQr7mVXcWL156h8v-cCTF8Dt160_hWV-7KHx-As2Ckk83L43jeB2IctbrQpmzFbcX-J3_4Oz4sUWw7o7q7msPrP1s8VHiskFI_FoWxxP91pJQKLDs-GvNpePw3BQBmTM8HTrlpBy_SzD_VKluKfdomTxVsf5ET1HU5uU65Ha86naCWLvovYv0i9Boy-h06OFOKFFAvuTTO__QQutA1okIwGCyamqFKUEZpngeZEZS7XN3nKuqjDt9iRbd-sr_Tj-hBUJsfvdw-Op_nHIYAd8LAbicGCCyankk_KMlHMypyfsLEhIkBJCInxyfxaUBUE5olGCowhH84LmaZLOSVqEUUpRccLPMMJhEAQJSsN5gGdhnNKowGlAIxYWQQlCxGrKxcxJO1O6OvEHbM-CII5IfCJozoTxf7aBcXeqGYPo4kSfee3ytjIgRIIba_YjWG6F_1MP3yG6eOkcrD-0y8xJq8XZ7z8L3Ev7cIb_GwAA__8xgYBH">