<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/76309>76309</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[mlir][affine] --affine-scalrep crashes in mlir::affine::affineScalarReplace with assertion failure "multiple simultaneous replacement stores"
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
anonymousMCS
</td>
</tr>
</table>
<pre>
git version: 31aa7d2de018693a6b45c9056a67229c54461b8f
system: ```Ubuntu 20.04.6 LTS (Focal Fossa)```
reproduced with: ```mlir-opt --affine-scalrep a.mlir```
a.mlir:
```
#map1 = affine_map<(d0) -> (d0)>
#map4 = affine_map<(d0) -> (d0 + ((-d0 + 3) floordiv 4) * 4)>
func.func @func1() {
%tmp = arith.constant 1.1 : f16
%alloc_66 = memref.alloc() : memref<f16, 1>
affine.for %arg2 = 4 to 6 {
affine.for %arg3 = #map1(%arg2) to #map4(%arg2) step 4 {
affine.store %tmp, %alloc_66[] : memref<f16, 1>
affine.store %tmp, %alloc_66[] : memref<f16, 1>
%270 = affine.load %alloc_66[] : memref<f16, 1>
}
}
return
}
```
trace:
```
mlir-opt: /data/bin/llvm-project/mlir/lib/Dialect/Affine/Utils/Utils.cpp:877: void forwardStoreToLoad(mlir::affine::AffineReadOpInterface, llvm::SmallVectorImpl<mlir::Operation*>&, llvm::SmallPtrSetImpl<mlir::Value>&, mlir::DominanceInfo&): Assertion `lastWriteStoreOp == nullptr && "multiple simultaneous replacement stores"' 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/bin/llvm-project/build/bin/mlir-opt --affine-scalrep a.mlir
#0 0x000055899b160b2f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/bin/llvm-project/build/bin/mlir-opt+0x167fb2f)
#1 0x000055899b15db84 SignalHandler(int) Signals.cpp:0:0
#2 0x00007fbd882d8420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#3 0x00007fbd87dc300b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
#4 0x00007fbd87da2859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
#5 0x00007fbd87da2729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
#6 0x00007fbd87db3fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#7 0x000055899b2fce4d forwardStoreToLoad(mlir::affine::AffineReadOpInterface, llvm::SmallVectorImpl<mlir::Operation*>&, llvm::SmallPtrSetImpl<mlir::Value>&, mlir::DominanceInfo&) Utils.cpp:0:0
#8 0x000055899b2f128c void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (.constprop.3) Utils.cpp:0:0
#9 0x000055899b2f128c void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (.constprop.3) Utils.cpp:0:0
#10 0x000055899b2ff9f0 mlir::affine::affineScalarReplace(mlir::func::FuncOp, mlir::DominanceInfo&, mlir::PostDominanceInfo&) (/data/bin/llvm-project/build/bin/mlir-opt+0x181e9f0)
#11 0x000055899b287b6b (anonymous namespace)::AffineScalarReplacement::runOnOperation() AffineScalarReplacement.cpp:0:0
#12 0x000055899de4a72e mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/bin/llvm-project/build/bin/mlir-opt+0x436972e)
#13 0x000055899de4ac0a mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/bin/llvm-project/build/bin/mlir-opt+0x4369c0a)
#14 0x000055899de4b5ac mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::'lambda'(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&)::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const Pass.cpp:0:0
#15 0x000055899de49d65 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) (/data/bin/llvm-project/build/bin/mlir-opt+0x4368d65)
#16 0x000055899de4a4ca mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/bin/llvm-project/build/bin/mlir-opt+0x43694ca)
#17 0x000055899de4ac0a mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/bin/llvm-project/build/bin/mlir-opt+0x4369c0a)
#18 0x000055899de4b3d4 mlir::PassManager::run(mlir::Operation*) (/data/bin/llvm-project/build/bin/mlir-opt+0x436a3d4)
#19 0x000055899de3c2b3 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#20 0x000055899de3d784 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, llvm::ThreadPool*) MlirOptMain.cpp:0:0
#21 0x000055899de3d934 mlir::LogicalResult llvm::function_ref<mlir::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
#22 0x000055899df397e4 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) (/data/bin/llvm-project/build/bin/mlir-opt+0x44587e4)
#23 0x000055899de36197 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/bin/llvm-project/build/bin/mlir-opt+0x4355197)
#24 0x000055899de3da81 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/bin/llvm-project/build/bin/mlir-opt+0x435ca81)
#25 0x000055899de3dee6 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/bin/llvm-project/build/bin/mlir-opt+0x435cee6)
#26 0x000055899b0975e3 main (/data/bin/llvm-project/build/bin/mlir-opt+0x15b65e3)
#27 0x00007fbd87da4083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#28 0x000055899b13062e _start (/data/bin/llvm-project/build/bin/mlir-opt+0x164f62e)
Aborted (core dumped)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWltv2zgW_jXMCxFDInV9yIOb1NgADRIknZlH40ikbG4pUktSbfPvF6RkR3KcS5tsd2Z2gTaWRfLj-c6Nh6TBWrFRnJ-h9ANKL06gd1ttzkBpdd_q3l6d351Umt2fbYTDX7mxQitEl5jGADkjjEdxkZUUsipJ6zJKM8hyQso6TZIsrooGRRcoWg5_7b11vPWjURYN_36reuV6TKJFlCwy_OnzHUakWOkaJF5pawGRct95imV4ZzTra87wN-G2M9BWCnOqO4dPT6FphOKntgZpeIdh4duOAo5NdPx62IfQFroYI3qBB8x1Cx2i54gULEKkxKeIfsS7b4h-nI5LXjUOI_LBPyFSnI7fqO_RSK0NE19x4r8hsgwP-ymaXtUL_wejJPKfccAoMco_DD0wRiR1bTdIYYTbLmqtrAPlcLzwpJa4ibOxMyIpSKnrdZaFAS1vDW8W4d0OmS7H14ie-5HkHMd7gfDIdNFoE9DMhgSkBDuNs6lcR7rS0HXUd5gvAPhpnR7fJ_P31vEOJxPcEdQ6bfjI3Ys4YTZ4-4tEJhK-DxgiKcmjiTsspAb2U2Aov9ibd_9ouOuNGn1v9_aovzsDNX_K3XcRFMKKrBg4QGRVCYXISsqv7Wln9D957RBZhaghKykqRFYXAuTwehnYIbL6zQlpd5-LuusQXRZ57pG_asFwo803MOzOq_ez_qSBIVLsQpEuBy0NzwPmLQd23V0qx03jKZBz7EUauty1IOXvvHbaXLadRPT8Aeq64wacz19k6TVJsiNjb5y54-7R2N9B9vxh0EPDhW6FAlXzS9Xo0Fp6aktrufFz-awkwbo_jHA8kLwOceg9QPVSds47foZIhhEhbS-d6CTHVvhHUFz3FhveSah5y5XDwQ0tIgSRHDcgJGeLwWY3nz4u7z5i21etcBhw1W_8SG2cD5ytc531IpMVIquNcNu-WtS6HQ362K7C2t5PtMKgGBaqlj3j2G05rg3YLa6g_hJ8aJz-zkH9BbO-7fZOFS0Gp78xemOgxWA2vSdhX-FWVS8k2ze-mNF3qYtGOPoeRVGUpkVZVnEWVaSZ2Nje2-HhxgjlgsyfQyCQ4qGTgW9rbZ3h0I72FsoNubf4KbER-RB9j7O8qUjjHWQvbTyXNmVVkeA7sVEg_wGKSW4QKcbJh9e7EIrC_z0QGYHypmJFQViRkAiv14YHf1kbN8o-hOn3IltnyakUqv9-ulH90NC5reHAFlYvokHiJCHRTF46nSZnNY2iChsQlr8Cv_bIWUBO_MAZcjJHBlKkJYZKv0ryCTLxA2fI6SFyvrfkqzFzMsfM5pgVbVj2Y5jUD5lh5jNfIE3Nk79jdsTTheDAi4sDFcSkqIdV4gGScQdCDs_fQH6ZCbIa1HXpPBdtgkjFExxn7Hzd5BvWw4Ib5nxmaKi-Zkz_APnl2jAfsMG7hgqrM7pb0BdYl_9zrH3miw5YN2UT4eOePTzf1SDB3A5r4UxKT2PURK_q6-4lH5y23mjrjnnp21J9EfOyeUidnu881ZMir7LKz7LfaWEFLbddIFdOQ3pG3K-f4yrVq2s1MVCozJ8YcdwEZCoS4wnkhD_hc9fdZ33d3YC1SwZdcLJRhpklfIfRy572v4eWpQJ5b4W9AgUb70TnuNJa-s9ehX0pe5elN6FZmRM-swc9JF9H8MPkb0THZahzZ0Hju-45Ze-ujZn_grWXyjoTKittHqHOOwwzDw2j7DdguHLe9XGI3iHU367wOoKZwpMDhVcp1D-s8InHL-29qsNSRIpBT2PUIJJLaCsGiOQzw7zfFNfdzdWs4Ed0qbsx_YZI_CUTDwbDHux4hKcHOi9Zlr6zzt_sKAXL0pmjZIeRmdQ_Hpl_lbSU1PMoyf-fln5tWioO0xJlyYGcO-ZHfeugRHqzgEBZMhOwnAtIa1JR3HHTaNMuQ_lmX9i9WsfG3e8WDGfrzhlEzyelve5Nza82vnLcKfvAPa4-Xd6ea-X4d_fIlFdSmOvOXYFQ51o1YjPBKPGk9WiOItEBP5YXCe6Mrrm1H_qmCXvgV9HrlfhXzx_Ru-KtNvc7qEl_xhvopVszLrnjT4-hHx8Vvs9xnhWfw4HYLd8I68z9o13V57DlvgnxtHyVuuJDdZV06q-f9EbUIG-57aV7utR_agAixa9T59NGDTuN0FKDlBXUX9aNmok90dOf0D2Om_2VIXO0ivnTWIUUUqvNr1XsMyK9HDDzXU5Dy5xPA8Z2UrilYjcHGee_we4vGKTP9nioFN6nWEzSIuez1ZEcbONoFpf58UD7u6WJt1YaaRqX-UyXyeHSAkX8pC7Hkq_ewlDcHRwt3Tkj1OaWN8-8fl4RbydYQxHPCKaHBDnP3oXgf5wJ59mMyWyPVEVlnnKKWxDqjQdXaZWlnM6myg_Oz5OooHi9lqKq19aBcevJvK89Ufcgs1nmR78xjTLC8YD_1muXpMkmZz_LShvHwzlnrQ0PN1acPciyuwg9YWe-tirhhJ_FeURpXqRxfrI9ixMWJ02d5lDTpiyBpDHJKlKUTZGSBNiJOCMRoTEhSRQlcZovqiohMaQl5EXJKc9QEvEWhFx4FgttNifhsu0sz2hUnkiouLTh9xiEDLerBKUXJ-YskK76jUVJJIV19gHACSfDbzjCgPQCpR_GE9T04vGlWbjB4xYL9foT1_AzCwz7e80GhOzDjfiP3Fqe9Eae_fxdZNDQvwMAAP__r6uGAA">