<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/108374>108374</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[mlir][affine] -affine-loop-fusion crashes in AffineOps.cpp:2402: void mlir::affine::AffineForOp::setLowerBound(ValueRange, AffineMap): Assertion `map.getNumResults() >= 1 && "bound map has at least one result"' 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-loop-fusion a.mlir`
a.mlir:
```
#map = affine_map<(d0) -> (d0)>
#map1 = affine_map<(d0) -> (d0 + 1)>
module {
func.func @test_add_slice_bounds() {
%alloc = memref.alloc() : memref<10xf32>
%cst = arith.constant 0.619152 : f32
affine.for %arg0 = 0 to 10 {
affine.for %arg1 = #map(%arg0) to #map1(%arg0) {
affine.store %cst, %alloc[%arg1] : memref<10xf32>
}
}
affine.for %arg0 = 0 to 3 {
affine.for %arg1 = 0 to 10 {
affine.for %arg2 = #map(%arg0) to #map1(%arg0) {
affine.for %arg3 = #map(%arg1) to #map1(%arg1) {
%0 = affine.apply #map1(%arg3)
%1 = affine.load %alloc[%0] : memref<10xf32>
}
}
}
}
return
}
}
```
stack trace:
```
mlir-opt: /data/szy/MLIR/llvm-release/llvm-project/mlir/lib/Dialect/Affine/IR/AffineOps.cpp:2402: void mlir::affine::AffineForOp::setLowerBound(ValueRange, AffineMap): Assertion `map.getNumResults() >= 1 && "bound map has at least one result"' 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 a.mlir
#0 0x000055725a2b72c8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10dc2c8)
#1 0x000055725a2b4dde llvm::sys::RunSignalHandlers() (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10d9dde)
#2 0x000055725a2b7c5d SignalHandler(int) Signals.cpp:0:0
#3 0x00007f456da40420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#4 0x00007f456d07d00b raise /build/glibc-LcI20x/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
#5 0x00007f456d05c859 abort /build/glibc-LcI20x/glibc-2.31/stdlib/abort.c:81:7
#6 0x00007f456d05c729 get_sysdep_segment_value /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:509:8
#7 0x00007f456d05c729 _nl_load_domain /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:970:34
#8 0x00007f456d06dfd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#9 0x000055725a3568df (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x117b8df)
#10 0x000055725a3f2396 mlir::affine::fuseLoops(mlir::affine::AffineForOp, mlir::affine::AffineForOp, mlir::affine::ComputationSliceState const&, bool) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x1217396)
#11 0x000055725a3c7d9e (anonymous namespace)::GreedyFusion::performFusionsIntoDest(unsigned int, unsigned int) LoopFusion.cpp:0:0
#12 0x000055725a3c5b35 (anonymous namespace)::GreedyFusion::fuseProducerConsumerNodes(unsigned int) LoopFusion.cpp:0:0
#13 0x000055725a3c55c9 void llvm::function_ref<void (mlir::Operation*)>::callback_fn<(anonymous namespace)::LoopFusion::runOnOperation()::$_0>(long, mlir::Operation*) LoopFusion.cpp:0:0
#14 0x000055725a3bb84e 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)
#15 0x000055725a3c2b2d (anonymous namespace)::LoopFusion::runOnOperation() LoopFusion.cpp:0:0
#16 0x000055725d3de156 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 0x000055725d3deac0 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 0x000055725d3e1102 mlir::PassManager::run(mlir::Operation*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4206102)
#19 0x000055725d3d9931 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#20 0x000055725d3d958b 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
#21 0x000055725d485f25 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)
#22 0x000055725d3d49b5 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)
#23 0x000055725d3d4c5f mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41f9c5f)
#24 0x000055725d3d4f8e mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41f9f8e)
#25 0x000055725a297f07 main (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10bcf07)
#26 0x00007f456d05e083 __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:342:3
#27 0x000055725a297a8e _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/eJzcWVlT5Djy_zTiRYFDlnw-8FAU1P9PBAwEzO4-OmRLdnnblrySTMN--g1JrsNFVUPPTMXsTkR3YR15_DJTmTqo1m0jOL8C8TWIby7oaNZSXdE3TsvqopTs_appDXzlSrdSALKAWZhkKMtqRHMUxiVANwAt_K9-14b3dhJI0N_KUZgRhlmAoiCB97--gATtz1Z8UJKNFYffW7OeqPquVZdyMPCS1nUr-GUn5XBZj1Y6pIEdPmDjf6chsulMkP8HpzYmPR0gIDfQ8y16OgCyBDhjCOAcXgJyCzctQG73ycIv0UGAr2G4T91LNnYcgvTatyGsR1EF9geCCBmuTUEZK3TXVrwo5SiYBjizbPdoIAQ4pl0nK6dGz3vF68B1bCaTxdQNyDJEbzXBWx0m-kobD0K1Zh1UUmhDhYEoSMI8jLFjYcm2NB5tUEvlxKsGOXoEjYQhmut3ZLY3mTef09KxsMoaOXWH8_4Djlue2kjFJwgAL7fGsPHqRYH45lMTQAjSmz2L7Dd-BJXs6XUC5AmTHOGLf79RjnAlx7iGJ7iGJ7i6IEF7cR7QYejeP9ATG9_HaPfXSNBJyg4chb7mpQ_OmXecdqLiZlRi094O7T4OEoI2tPoGjaIV3yWNozM3GcklKLxi1FCAV_rf7wCvHu7vngFedd1rf6l4x6nmm-ag5D95ZQBeucSEV11bAry6aWnnuxfOVgCvHAvfehx0UA0DIAscIWwlvsqWwU1qIwtvYP_tSVZSPQ6-Q3NzL79zdW0zCcDZ32k38mcqGm4Xjp_-YIMkt5wXWnNlbFq1aZcOQcPNL2P_zPXYmW0eIrfWryEEOAE4gQBjl6egzaZrqiE10MI2UAoOlaMFGAOcwpq2HWeBN-LT_e3i5RbqsexbAyksxwYqPkhlbJSujRm0xYBXAK-a1qzHMqhkP9nyo0lbrUeuAV5BKhhsRdWNjEOz5rBSVK9hSatvzreT-BfnbTb2w9bZKIDwSclG0R5S1Yw9F0b_Zh-XY9sx-7cVk8c_K2JTQGOCIHpDCKE4TnFMcZniKoMOtnfqu_YfT6oVxgH51UUtznaTFP1eSG0Up71z1BK2wjj_WTf-YXgAvkZvIWIVrrJdIgCYhAcYIsb4MQzPo3hpG0G7_6eCdVxtw-wsauaM8Zma-NDUVczgTCGAs8lyvnuzHJH7v2VEJkZpHcUJoxGKMIJFobirVoUyEyK_5t-ypEiiy64V49tlI0Y_MJi14pQFWgbIaxxFGM30jWZiUMoQKqGirbYFcQu-6dqyuryv7jB62zZxQEJrS4cC4FUQ2Na7Znyw62YU7ZvveHXaiNE2HeugAmQRh4Aswp0m8VyTuMriHNJSOqRf08Qwbw1H5YRkVki6E5IcCklxDhtuCq93oXljV2nxavPaV-W2wlj8tiT1uqmoFx0jmwOznez0mOxCdIUlLJjsaSt-n8g8tUFEop3MbC4zYTVLvhA4lQ2ZxIUMITVLZiGTz0KcxEnG6rMsrzAtM1ZvZdskMM9kpMYkT07UrnrU_F5KG4vZ59UNL79QAk9OWsp-GA21pe7F7rRfDDUcuj3wlCxLKbtzpSEcpiRPZnaaZ0tSpSy34ZxRIcV7L0cNBe25HlyWzz2I_1Ocs_fVOJ3CAFkMXNVS9b5L3wkjb7hFlI3CHemYrwFLOG_n0NrdU31MblY9fKBeXJL459WzHn7y5zu1lEKPPVe_SGardvazGpFDjeIq9zujXY2xpyrr4sLvLt3oLLgeB65cEAC8mE5prr-iXWf3C0Ut_MHuRzh3mk6FdxSPYo9ztp0JcFQgKwRnnRTNPDwPdPnUANHcAGWZRfxwa8i4oW3nv7_T7hsgy93gSqrvVLE7Y-VK5fU6pc_yd5p1BvUftPv2qJgtredZYCFHWcRnCyw-iBdcYvZZBH_Fs5_6KdkXzAjjYZyccNHj8Kt8HJ6o1gtGB-eTSezMvHbC5JTT7tqNLATt3nWrH6igjbX5Jrl9TANn8EWEEQnjebJLD01CK_TTJnlqB96509Is8uzULdLkD7fRPpEVdSe0Ue6gINUHrvMJXrIfmHR_oooLcydquak9izO6gVZo5oZs7gYehggfaL-xx9E4PMxY51E7CRGeqZ0fRE-ekxBOlW_hEpP-5CCkDZsOIWuqOCsGowBZ7ihe5Kgq_tDYnDjbFOywW2BLKQx_Mx_c_tC16nEwD7QVSynqttnjkcO90aMJA6NDfHFW7mXfe9m0Fe38mfx0Vj5FAHC2hT-K9l8j_wD_gfdSvV-Pde1XwnY-4zUdO1Mw3nHDT9PYMno7rxmHTjhVa49a8avuPDuenXbTnc0zb1pt1PvH-PhRDJzcDfxXeObzCJ1tVlmUxTWO97DroWvNQrAnJSuu9UbdPyXu_gdXxQ9n7I-9GNWK5pnXJ7vPlJMprXG8n5MxPshZUV7Gx1fDX20tn8XCYZ3n5dzC5NDCVVyftPC0VanW1G9KFj8bOJ-Z52ywq3h2f4CjQ9h1xv8Q2H8SvjqbHUvw_FiC87RGKZwuls5w_1lWNUpnChxesHGUEVgUXVtWhTZUmeJnrrkqPW4uFv2nG3R83IUXibD93YlPD_HTjEMv-FwWoPsu2D7sXLArwnKS0wt-FaY4CSOMUnKxvspoXCPCUsRjhmsUZjiKaEbqCCdphkN80V5hhCOUhzgM44iQAMcsJxGr8zrNkigMQYR4T9susHoGUjUX7q3iKkQZSaOLjpa80-6xHWP_MIRBfHOhrhyucmw0iFDXaqN3HExrOvdA7wjiGxBfT_db8c3RJwb3CMI1bAX8y74rXYyqu_rtD0eTP16v8H8CAAD__xp35bs">