<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/108369>108369</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[mlir][affine] -affine-data-copy-generate crashes in BuiltinTypes.cpp:525: unsigned int mlir::detail::getMemorySpaceAsInt(Attribute): Assertion `llvm::isa<IntegerAttr>(memorySpace) && "Using `getMemorySpaceInteger` with non-Integer attribute"' failed.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
axeabc
</td>
</tr>
</table>
<pre>
git version: 8168088f0a9015b
system: `Ubuntu 18.04.6 LTS`
reproduce with: `mlir-opt -affine-data-copy-generate a.mlir`
a.mlir:
```
#map = affine_map<(d0) -> (d0)>
module {
func.func @load_store() {
%cst = arith.constant 8.000000e-01 : f32
%alloc_0 = memref.alloc() : memref<10xf32, #spirv.storage_class<StorageBuffer>>
affine.for %arg0 = 0 to 10 {
affine.for %arg1 = #map(%arg0) to #map(%arg0) {
%0 = affine.load %alloc_0[%arg1] : memref<10xf32, #spirv.storage_class<StorageBuffer>>
affine.store %cst, %alloc_0[%arg1] : memref<10xf32, #spirv.storage_class<StorageBuffer>>
}
}
return
}
}
```
stack trace:
```
mlir-opt: /data/szy/MLIR/llvm-release/llvm-project/mlir/lib/IR/BuiltinTypes.cpp:525: 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 a.mlir
#0 0x000056375957e2c8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10dc2c8)
#1 0x000056375957bdde llvm::sys::RunSignalHandlers() (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10d9dde)
#2 0x000056375957ec5d SignalHandler(int) Signals.cpp:0:0
#3 0x00007f35c9c17420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#4 0x00007f35c925400b raise /build/glibc-LcI20x/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
#5 0x00007f35c9233859 abort /build/glibc-LcI20x/glibc-2.31/stdlib/abort.c:81:7
#6 0x00007f35c9233729 get_sysdep_segment_value /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:509:8
#7 0x00007f35c9233729 _nl_load_domain /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:970:34
#8 0x00007f35c9244fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#9 0x000056375c7d43b5 (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x43323b5)
#10 0x00005637596d63bc 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 0x000056375968284e 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+0x11e084e)
#12 0x000056375968284e 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+0x11e084e)
#13 0x00005637596cb595 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+0x1229595)
#14 0x0000563759682268 (anonymous namespace)::AffineDataCopyGeneration::runOnBlock(mlir::Block*, llvm::DenseSet<mlir::Operation*, llvm::DenseMapInfo<mlir::Operation*, void>>&) AffineDataCopyGeneration.cpp:0:0
#15 0x000056375967f029 (anonymous namespace)::AffineDataCopyGeneration::runOnOperation() AffineDataCopyGeneration.cpp:0:0
#16 0x000056375c6a5156 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4203156)
#17 0x000056375c6a5ac0 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+0x4203ac0)
#18 0x000056375c6aae7e mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const Pass.cpp:0:0
#19 0x000056375c6a719b mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x420519b)
#20 0x000056375c6a52a8 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x42032a8)
#21 0x000056375c6a5ac0 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+0x4203ac0)
#22 0x000056375c6a8102 mlir::PassManager::run(mlir::Operation*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4206102)
#23 0x000056375c6a0931 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#24 0x000056375c6a058b 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
#25 0x000056375c74cf25 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+0x42aaf25)
#26 0x000056375c69b9b5 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+0x41f99b5)
#27 0x000056375c69bc5f mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41f9c5f)
#28 0x000056375c69bf8e mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41f9f8e)
#29 0x000056375955ef07 main (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10bcf07)
#30 0x00007f35c9235083 __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:342:3
#31 0x000056375955ea8e _start (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10bca8e)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWl1z4yjW_jXkhrILoe-LXDhO-31T1amkOj27lyqEkMI2Bi2gdLy_fgsk25Li9CQz8c7sTk9NxwIB5zzP-eBIiBjDG8nYJYivQHx9QTr7qPQleWakpBelqnaXAF0DtOr_NtzCJ6YNVxKEK5gFSYayrEYkR0FcjkeanbFs6waBBP1SdtJ2MMiWKFom8PPXB5Cg8WjNWq2qjjL4ndvHYdZWcL1QrYULUtdcskVFLFlQ1e4WDZNME8sgWbpRs9WGznBourv-fzi0cbglLQThNewXLrakBeEa4KxCAOdwAcJPcN8C4ad-2lZVnWAQpFd9G8K6k3Tp_kAQIaFIVRirNAM4c6uMBkIIcEyN7WVqbh-XVEljibQwWyL_H1ugADrkdYgn84gQihbIz92yrWb10nftxYSroRuE6wA9u-l4DQEOTcv109KpRBpWUEGMAeH6oW9fdXXNtAO3xzeQsayV9mJ108tE0CoYoCke-HJ04Ef35Hrd_BJORatOds8W9GDRyCxLR-mIAeeivSQQX38gbjgB5E042Ktf8NzyQXo9Mvi4oZnttNy3D7eOFzPPNpbQb9BqQtnR-0-O3MeWDzW8cZEF8Mb8awfw5vbzzReAN0I8bReaCUYM2zdbrf7BqAV44yMMbwQvAd748VcdF5bLr7uWmSVtWxCuYhw7AZ30SaaCXFq4D81wVTFLuOivG2Zv2Vbp3UNLKFuZG2kBzlbWal52lvk4XMGVMUxbrqRLD06hfjI3BITrG2lZw7Sb47jF2fa4oHc3nACcQIDxL4bLxi0xlTos4EhyWQhKJRdDHyRHTTDAKawJF6xa9mTef_60evgETVduuYUEll0DNWuVts71H61tjVMUbwDeNNw-duWSqu3A6UtquTEdMwBvIJGOMyq6ikH7yCDVxDzCktBv3saD-Adv9arbtgejoyWE91o1mmwh0U23ZdKa32zrsuOicr9cDpZ_Y1oe_BuHCKJnl-TiJEzjPE4Zphk8GtDsTH9xr7m0Hs9X78Q4Ow7S5HuhjNWMbL0p186desNmHwgL4Cv0HKCKYury6xFDMMNQVhU7heFLJx94I4n4fyIrwbTZJ-qzqJlXFZuoiedU07iCE4UAzgbm-u59tCL_77BQOCyU1mFMcxqkEUawKDTzGbLQdkDUp4DnLCmSaCG47J4Xjez6G6191IxUS6OWqNc4ijCa6BtNxOA4QqiEmnDjkvABfCN4SRef6Q1Gz4cmXoaB49KjAHizXLrWzlSsdeHTSf7cdzx5bWTnmn7pJXXZKQDhKjhqEk81CcMsziEplUf6Nk1s1bPhZ3khmROSHoUkcyEpzmHDbNHrXRjWuGAtnojo3swAl9bhd_vl1jSU9KJj5JJmdpSdnpJdSFH42qVSW8Ll7xOZp86JwugoM5vKjKK6St7gONS5TOJdJgzrKpm4TD52cZpWUVjG5wivKAxxWMYH2S4JTDNZUiVhSeGT4tUoFbiS0O1SRV8c-LtuPzrsfHetS5OuiMarocT0_ZQI4bJ7UUsQro_j-0Q7vr4mlqxVu_u_IeNOMiUX3NiCW3dHaRCu57fGO69UFStU67QxE6EjJdfQ6o6535oI4y8cqJcdbt8d9fUXfeefXL3TZK_8tSP6rlcB-rp92H-MrfphvX5ETBT8m4vgF-CvmTTsgdnXsKxODL8l7Y2s1Q-n7PE5eUlfLvmaIypQXw0JJZsp0JkXws9Ktb9Yfmo_cJ4_3f-SDGcR6z3_dEn3nYhvE5U3Sn8nuro5GP7TD4Ji_TvjaYL070R8u9OV2_rOsw8HDGURmyQK_JOu99AVTumiZZzHrwTlzwz4MwO-IQOexXMxzuN8WhFE80DHSeZkE6nkbqs6AyXZMjM8ho5Znblw_1LNPel08k5eCUW_TcJ26DnFz3-Cztd0Pr1bxFNW0hr1FvmdrIy0zN6vVDIpHBMSB3HySjq-a7-qu_aeGLOqSOujdFBiYhM3YCDsdSqPd1aSiJ3h5pZI0rj8uoalUsL9jl-SnMl7I4zCIE4m3pvOKSEUvZuSe94y4VLGdJdxQw9Ikw_naDzJibqRxmr_qkPpF6tOB4zcaq_7PdFMWhcW-wy3OqMZCEUTM2QzMxCWsnebYRQeK7OT9GbbCoCznr1pRdjn7GH_8aE0sd3Hybtr7299rumTiKcWusVOR2g-4yEN8vKDeTiTSeMgL8cmxWgeWZhkf7Fkg0k2oST4mWz-BMkG45kZsgDhmfZ7Pk764fzB8TxqJwHCE7XDmdooDwPYMl0rvV3Rvj7-8QvjQ7lqHolmVdHaafH9oDpN2W3jHrYmde4RuwO2VtKyZ_vC7LeC67vW3hIu10rWvBmtkcPR3ZO5D0dzfHFWjiq3z6rhlIgvzHTCvv6499oEgLMD_E7yf3bsBfz-LGQ4oRrTVbGadMI9lghm2etzhnJxXG_OjfDrL7tGPL3VnGfHc9TumhPBqP3CGm6s3r30jx_5wKsvZf4Ulvl1D42nL14jWuPxQ7ppBbcrWd1rRZkxe3X_EL_7L4yKH44Y33uwmsvmC6tf7T5TTiakxpOHXzx7osrLvIxPR8P_WiyfheGgzvPpgQNO5wzTuH6V4aFUoY-kL0pW73WcX6PnbLBpXE9gZ3PYdcY-BPYfhK_OJu87cT49po1ZjVI4HMCd4Zy4pDVKxwocjuT3h4ExykJYFIKXtDCWaFu85ziQmm5_ANtf-pt-HX8wGEbY_T2KD-b4ScZgL_hcDJCxCQ7fw1xUl2GVhzm5YJdBipMgQjjPLx4vU5ykVUqykDEWp3mVoSQJaEbyIIsymuELfokRjlAe4CDAUZwt6zDKEEnyOCxDEjEKIsS2hIul03OpdHPhP-24DFAWJvmFICUTxn95h3H_PQ0G8fWFvvS4yq4xIEKCG2uOK1huhf9az0-Ir0F8Nbyuja9_9EWG_3SEGcgl_Ct-qHPRaXH527_EGSz2dIn_HQAA__-wcZxe">