<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/118759>118759</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[mlir] -affine-loop-fusion 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: adf892d743d91afc1af7893f97c770db31c26916
system: `Ubuntu 18.04.6 LTS`
reproduce with: `mlir-opt -affine-loop-fusion a.mlir`
a.mlir:
```
#map = affine_map<(d0) -> (d0)>
#map1 =affine_map<(d0) -> (d0 + 1)>
module {
func.func @loop_nest_seq_imperfect() {
%alloc = memref.alloc() : memref<256x8xf32, #spirv.storage_class<StorageBuffer>>
affine.for %arg0 = 0 to 64 {
affine.for %arg1 = 0 to 8 {
%0 = affine.apply #map(%arg1)
%1 = affine.load %alloc[%arg0, %0] : memref<256x8xf32, #spirv.storage_class<StorageBuffer>>
affine.store %1, %alloc[%arg0, %arg1] : memref<256x8xf32, #spirv.storage_class<StorageBuffer>>
}
}
affine.for %arg0 = 16 to 32 {
affine.for %arg1 = 0 to 8 {
%0 = affine.apply #map(%arg1)
%1 = affine.load %alloc[%arg0, %0] : memref<256x8xf32, #spirv.storage_class<StorageBuffer>>
affine.store %1, %alloc[%arg0, %arg1] : memref<256x8xf32, #spirv.storage_class<StorageBuffer>>
}
}
return
}
}
```
stack trace:
```
mlir-opt: /data/szy/MLIR/llvm-release/llvm-project/mlir/lib/IR/BuiltinTypes.cpp:526: 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-loop-fusion /data/szy/MLIR/seed/seed0/tmp.hcTNiOHPD9.mlir
#0 0x0000559bb6c79048 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x1188048)
#1 0x0000559bb6c76b5e llvm::sys::RunSignalHandlers() (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x1185b5e)
#2 0x0000559bb6c799dd SignalHandler(int) Signals.cpp:0:0
#3 0x00007fa328a5e420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#4 0x00007fa32809b00b raise /build/glibc-LcI20x/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
#5 0x00007fa32807a859 abort /build/glibc-LcI20x/glibc-2.31/stdlib/abort.c:81:7
#6 0x00007fa32807a729 get_sysdep_segment_value /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:509:8
#7 0x00007fa32807a729 _nl_load_domain /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:970:34
#8 0x00007fa32808bfd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#9 0x0000559bba1e5825 (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x46f4825)
#10 0x0000559bb6da0c0d (anonymous namespace)::GreedyFusion::performFusionsIntoDest(unsigned int, unsigned int) LoopFusion.cpp:0:0
#11 0x0000559bb6d9db55 (anonymous namespace)::GreedyFusion::fuseProducerConsumerNodes(unsigned int) LoopFusion.cpp:0:0
#12 0x0000559bb6d9d5e9 void llvm::function_ref<void (mlir::Operation*)>::callback_fn<(anonymous namespace)::LoopFusion::runOnOperation()::$_0>(long, mlir::Operation*) LoopFusion.cpp:0:0
#13 0x0000559bb6d8effe 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+0x129dffe)
#14 0x0000559bb6d9a97a (anonymous namespace)::LoopFusion::runOnOperation() LoopFusion.cpp:0:0
#15 0x0000559bba0b57a6 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x45c47a6)
#16 0x0000559bba0b60d0 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+0x45c50d0)
#17 0x0000559bba0b86a2 mlir::PassManager::run(mlir::Operation*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x45c76a2)
#18 0x0000559bba0b0f4a performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#19 0x0000559bba0b0b9d 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
#20 0x0000559bba15cd75 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+0x466bd75)
#21 0x0000559bba0aab85 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+0x45b9b85)
#22 0x0000559bba0aae2f mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x45b9e2f)
#23 0x0000559bba0ab15e mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x45ba15e)
#24 0x0000559bb6c59b37 main (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x1168b37)
#25 0x00007fa32807c083 __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:342:3
#26 0x0000559bb6c596ae _start (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11686ae)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWV1z4yrS_jXkhooLoe-LXGic8XtSlZykJnPqvVQhgRR2EOgASuL99Vsg2bIdO_Nx4jq7Wzs1sS2g6efpbroBEWN4Kxm7AvEnEF9fkME-KX318rJOgjy4qBRdX7XcwmemDVcShAUktMlyTNMopHlAmjogTZrlYZOndZoiWoVBjZM8SAAqACrM2ljWOTmQoD-qQdoBBtkCRYsE3n59BAkax2nWa0WHmsEXbp-m8Z3g-lL1FsJL0jRcskuhVH_ZDA4LJAvXv50BoGJqccKocB3-v3_AYUd6CMJrOM5UdqQH4RLgjCKAc3gJws9w8wTCz1uZwAl9TwYC_AkGW8lO0UEwCNJPABVw-tcMsl64Dwgi5HiUkhlbGvZnybue6YbVFuDMTbwrCHBMhFC1x96xTrNm4Rs2Y8NiagbhEsfJa_bahBjgJQQ4ND3XzwtjlSYtK2tBjAHh8nF8_jQ0DdMOsQc9GWbRKO2V6hZ5nQhaBZPogM2bwcE8ONuMBThGOzZfkL4Xazja1cP3gs5s88SecbArJRShWzO4OB3BjRRjBOLrjzeCG808kknNceUe_ofq39ggvZ4jYOf3CR8FibN7iH_FSbt2_5-3PtRbmtlBS78SfOv0eZCbjCX1N2g1qRkIiyMDNmnQJza8osQSgFfmn2uAV3e3N18AXgnx3F1qJhgxbPPYa_UPn1NWPivileAVwCs__tPAheXy67pnZlH3PQiLGCdOwSB9RaCQSwundArCgjJLuBh_t8zesU7p9WNPalaYG-kSV2Gt5tVgmU-DBSyMYdq6RA0S5ACNwtwQEC5vpGUt007GmRJn3Tyhz2o4ATiBAOM_DJetm2Jf6zSBs5ArGFAqeTm1QTIjwQCnsCFcMLoAqHi4_Vw8foZmqDpuIYHV0ELNeqWtWxJP1vbGocQrgFctt09DtahVNxn0rV25MQMzAK8gkc5gtRgog_aJwVoT8wQrUn_zfnW6H72b6dD1o5fRYgySB61aTTpIdDt0TFrzy26uBi6o--Zycrovnsdq54n5DWN0-kIAr2zXL57qr7_z-98ervOxuPq0HiKIXhFCKI7zqkrqNEdRBmcnm7UZfzxoLq1n_tXHN87mQZq8lMpYzUjn3b10ITc6P_tA_gB_Qq9BkGUoyqbkBXAYHBBIqpgdI_BlkI-8lUT8RiQVTJtN2T0LxriK2YwRHxo5pxTuoQE4m2w2Nm_WMvJ_4yzhNEvakBBnJGYRRrAsNfNZs9R24jJmh9csKZPoUnA5vF62chg7evukGaELoxZoxBpFGM1Ioz0dKK8QqqAm3LisvOXcCl7Vl7f1DUav20e8CANnQo8f4NVi4Z7WhrLeraxB8tex4dlDkYN79FMvape1AhAWwQQj3oeRkizOIamU5_hjMCwd7eClvIbMaUgnDcmhhhTnsGW2HBGXhrVuDZfPRAw_zJ1L65i7ytmZtiaj3hi5NJpNitNjikspSidVUtURLv-avjx1URNGk8JsX2FWNTT5gUipXYwkPkbCsKHJHCP5bjSTgMUZjs-xjKKkiTIcj4rdSt_PVZSgGrkdSkakkutODQZK0jEzlZ5x2f-fZoyuV8N06AFh4XboSndjkyt56poZV_d2C6ZLYvvPObxVqh-lDhanw7afhmhOqzj-eWzNYNjDeHzSSyXN0DH9u6KuNGU_BQcfwolZDp8Vpzup0R1hXFkvx_2T73UFfLtVuO-ZJm4EwMV0JPLtNRHCVcSykeMp6j2SM8ypWAzyXu7MnG1HAhyVaNxECCVb54KTWN5nH-6zz1jTsJH98X3QCxHfQLicO1dKvxBNb6xTqjY7mxNgln_Rpns8_5-Ib_eauopwntqEc9o0bF5U0UGkkDwl3wvcH_Hp-x6K93IIquKUJCecc99_Vff9AzGmoKT33ph07hnWDZjccdpRc08hiVgbbu6IJG77iZewUkocW_fnSG1xHaUkmb2QHNgjQRT9tD0eeM8El-wg4NzQLc3kww20K-RU3Uhjtd8AK_1m1v0Bo-axY8L-QDST9kY2CtZKurxcnM8HMaJo9kF64IMsIfgA-sYYRyPwMEWdB3OaEDxjzg4woyYicKpwhc9E5jtbdWPptFN-IprRsncHueUs8agGXbO71iXBjUsOgsixWipp2at94_A7wfV9b-8Il0slG97uzJHDnd4jSSI_JFflu_XrVrW8JuILM4Owp3PwKQGAsy33QfI_B_aG-3hMne4Kdm1FWUMGYUvKBLPstMx4v7BXIQ49cKqsHjXhj_ry7HxmdNecCFbbL6zlxur12-B4LwBOFv5_C8-8H54Y7e-D45qm8Q5x0wtuC0kftKqZMRusf0vQ_QcuiXdH7PY9Ws1l-4U1J5vPk4qTpKLpfDrBwX62IqTK4uPr4L9tFZ-n0lV5le2YFx-al-HmpHmnjUn9RMYtSPGzIfM925yNM8PNzDk84FwFMfsQzn8PORLE88ED7x886jivwhROtx9nuJJLsipMZ-2HN0w1ykJYloJXdWks0bb8mYuY2gybG6_xp-_08_grmTDC7nPSnRwyTwiDo9ZzcU_IxvLb9xEX9CqkeZiTC3YVpGEYZmkQxBdPV1FQI9rklDURrVEcx7RCEYuCiKCMxQxd8CuMcBRgFKMMx0G8oAznVZKFWVOzNK4oiBDrCBcLB3KhdHvhL9ivgiBL4_xCkIoJ499UYzy-0sAgvr7QV55UNbQGREhwY808g-VW-LfbXiC-Pnob7m_rmbkYtLj69ZcAE8znK_yvAAAA__-nTIzU">