<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/61734>61734</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [MLIR] `-test-memref-dependence-check` pass : `mlir::AffineMap::getSingleConstantResult()` leads to Assertion Failure `isSingleConstant() && "map must have a single constant result"'
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          BealZephyr
      </td>
    </tr>
</table>

<pre>
    Test on commit: https://github.com/llvm/llvm-project/commit/258b5424edcf72063561ef7bb2ba6e5fbf24181a

Steps to reproduce:

```
mlir-opt test.mlir -test-memref-dependence-check
```
Test case:
```
module {
 func.func @main(%arg0: memref<4090x2040xf32>, %arg1: f32) {
 affine.parallel (%arg4, %arg5) = (0, 0) to (min(128, 122), min(64, 2040)) {
          affine.for %arg6 = 0 to 100 {
            affine.store %arg1, %arg0[%arg4 + 3968, %arg5] : memref<4090x2040xf32>
          }
 }
    return
  }
}
```
crash trace:
```
mlir-opt: /home/ty/llvm-project/mlir/lib/IR/AffineMap.cpp:312: int64_t mlir::AffineMap::getSingleConstantResult() const: Assertion `isSingleConstant() && "map must have a single constant 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: /home/ty/llvm-project/build/bin/mlir-opt test.mlir -test-memref-dependence-check
 #0 0x000055e928bbc45a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/ty/llvm-project/build/bin/mlir-opt+0x22845a)
 #1 0x000055e928bb96ec SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f0fcd468980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #3 0x00007f0fcc119e87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #4 0x00007f0fcc11b7f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
 #5 0x00007f0fcc10b3fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
 #6 0x00007f0fcc10b472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
 #7 0x000055e92a58a1d7 mlir::AffineMap::getSingleConstantResult() const (/home/ty/llvm-project/build/bin/mlir-opt+0x1bf61d7)
 #8 0x000055e92a44268c mlir::FlatAffineValueConstraints::addAffineParallelOpDomain(mlir::AffineParallelOp) (/home/ty/llvm-project/build/bin/mlir-opt+0x1aae68c)
 #9 0x000055e92a43b84c mlir::getIndexSet(llvm::MutableArrayRef<mlir::Operation*>, mlir::FlatAffineValueConstraints*) (/home/ty/llvm-project/build/bin/mlir-opt+0x1aa784c)
#10 0x000055e92a43cdb4 mlir::MemRefAccess::getAccessRelation(mlir::FlatAffineRelation&) const (/home/ty/llvm-project/build/bin/mlir-opt+0x1aa8db4)
#11 0x000055e92a43d93d mlir::checkMemrefAccessDependence(mlir::MemRefAccess const&, mlir::MemRefAccess const&, unsigned int, mlir::FlatAffineValueConstraints*, llvm::SmallVector<mlir::DependenceComponent, 2u>*, bool) (/home/ty/llvm-project/build/bin/mlir-opt+0x1aa993d)
#12 0x000055e92a174b3a checkDependences(llvm::ArrayRef<mlir::Operation*>) TestMemRefDependenceCheck.cpp:0:0
#13 0x000055e92a1760e6 (anonymous namespace)::TestMemRefDependenceCheck::runOnOperation() TestMemRefDependenceCheck.cpp:0:0
#14 0x000055e92a4b96de mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/home/ty/llvm-project/build/bin/mlir-opt+0x1b256de)
#15 0x000055e92a4ba533 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (.constprop.510) Pass.cpp:0:0
#16 0x000055e92a4babbd mlir::PassManager::run(mlir::Operation*) (/home/ty/llvm-project/build/bin/mlir-opt+0x1b26bbd)
#17 0x000055e92a4aeb33 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#18 0x000055e92a4af201 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
#19 0x000055e92a4af3f1 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
#20 0x000055e92a57bd40 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) (/home/ty/llvm-project/build/bin/mlir-opt+0x1be7d40)
#21 0x000055e92a4aa513 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/home/ty/llvm-project/build/bin/mlir-opt+0x1b16513)
#22 0x000055e92a4acd3e mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) (/home/ty/llvm-project/build/bin/mlir-opt+0x1b18d3e)
#23 0x000055e928b88450 main (/home/ty/llvm-project/build/bin/mlir-opt+0x1f4450)
#24 0x00007f0fcc0fcc87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#25 0x000055e928b9b2aa _start (/home/ty/llvm-project/build/bin/mlir-opt+0x2072aa)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcWU9z3CoS_zT4QnkKgf4efBjbmdpsPVdcdiqHd5lqBJrRBiEtoMT-9lsgeUaS7WQSu96-3VRsC2i6f_2HpgGwtt5pKS9QcomS6zPo3b41F5cS1J-y2z-aM96Kx4vP0jrcaly2TVM7xNZ471xnEVsjukF0s6vdvuersm0Q3Sj17enPeWfaf8nSIboZp9INTXKexDSWoqwySlKWpJGsMs4ph1QmFa9oHOURIHKNyHr4fe9kZ7FrsZGdaUVfSi96QoBSMv4PzUbV5rztHHbSupVv4XP_ed7IxsjqXMhOaiF1Kc_LvSy_vsgkKF2CnchaSGlFryRG2eXQxlWvy5X_hVFMGqg1ojmiCZgd8TYbhCN2FZOCPFASk4eKUcQ-IHqFB7rI0_lOWkz4QlXVWq46MKCUVPjANj7OTMIUdu0Hie8mvsO1vt0EJJGfdYUj6rn7r6E7DUw8mtA9lXv4NwKoWjNKS4Mo4vlHhLw05TDJutbIg3oHvMRH3KAERvQSsyLNp9ok1_jHNlvIQ9n12HX8whgb6Xqjn9qHoePH3KWlAbvHzkD5utfH2PLoEN3s20YiunGPz0PeU_remiO6-XiH6GYdTHID3arsOsTWLKKeTa1dGm8dDhPYGrH1gXBo7qS7r_VOyatWWwfa3UnbKxfioMCl7_R81tZK4-pWY5SS2s6njMSIpoimGFHaQIeb3jq8h28SA7aBfOAG2mEzyqCIZriCWkmxGkxw-8eH9f0HbHve1A4D5v3Or8zWOB8Qv5waamt7aRHdYNAC17pUvZDY7SUe3MGh_BpcsnrKBlB-xaJvuoOPyAqR4ta0OwMNBrPrG6md_bmLeF8r4f_6pbD5vbSBEWUEkwdCCEkSWdCc8zJOAAdtg__sox0-bk2tXcD_OcQYzY9EBr5vW-uMhCY46crHxeCy_He0QPSSPFCaxwn4lX3AGi2wFqks8X2906D-AVooaRDNR9FDtx3DlYSfAyM6MsoqUpUiTvMiJ3i7NTIs-a1xI_JhATzk6TaNz1Wt-4fzne6Hgc7tjQSxsu2KBMARLXIyw8umYsooKmSeYQO19VnloPtO1bw8v_ryz-9_8kOTrmiG6MYGLRDdrFa-9WiF7Hy89bp-GDq-BTS6983AelUitk6iucLxAgnPqggDb4OmpyFxYrBGmBWE5AshyVwI4awCvN1CWNtbvw63HE7XfZh3-BhEFnOR6VJknNETfFd6r6XBa4zEGZ15LZtGGSQ5RCJ7U4J70zKIeJVGIpshzGcI45imeTlBuFHgBpRfQPUDMAP1kFYQW4MQw_DtuC1_6q7bcdNf6nkkeet6jgBkmpczRYq5Iozn8VSRnXQftZAP99LN8s1N74AruTYGHu_CHnuc86mTBvxOguh6LFBOsgxdv4OCWR4fFfQJiywULAWPJ3huZHMnq3VZSmsPKg_NO6lGNfKX8B-H03eKM4Bc8HiGPlqgFwUTE_RhJ7kJG8yA-fqwy8xQT7Uct_xhlziBpNehzBfDjvILvryabGL3DSj1RZauNbNYOeK9apuu1XKQQfsQOIEJb1v1DoFRFEzMTEtnpo2ymDPAwaBHUHYW9KdFe4F98T-Yc6KeZ_x8K_RA2AJISqSvsXLQrX5s2t5iDY20Xdjzi0HqqyLGcqDXn_QEWf4bsOJ56PEiFXLifCEd1OrJBp_bT90tWLsW0AUfjyhmUegJRqe-Yr_ZyFqDerS1vQENO19YPMXCMibfGBucJqmQs9hIFrpDwtgv635bd1LVer4SB9KDSum7G2M6yYv66BdlKGlb84zrnGCQPAyM2G_BSO0-6qp9yglPSXoV2p1pu1UShfOiZ_ZyKKVLc3IuFiie9HoxcOZmebO7U87nqWBeb8QgOWO4k6ZqTbMuvWD7k2rbOjFW63swUmw75_PcJP-1vSnlzc4g9uG1BPzHx7urVjv54J756UbV5lPnbqDWV62u6t2ER4Enoy_bf1GtQEVJhDvT-lx_2VdVqNpPUq_X9b97-Uy9G9m05vGJ1YReyAp65bZCKunk63PYh2eVwo90ntJd16Bk6e7krrbOPI7jRzmfwyHhNiyW9UnmKpbmYlU0EfhHu6tLUEOVORFU9TrEytYstoj5BETzv86crzu1CEShiACl_DF5W-kZ7Imd_obh8bLbT1wyAwmimYKGC0D-tPP38QrNVat3f61hfwDppwuGzmvsJOMiJhNX2E7Vbq3F7SLj_De0-x9cpD-kOJYB71Inc5mJmEw3R7o4ggAkEXt5nf2_ZYk3mjJKk4jNTEkXpiwFk6-acqzmyj0MddvyROVMrXf-NHKCwu8TG1Eu2KxOpmx-HZjncUJwA7V-m6QqjpN5EM5vz_xPnuHtVtW83FoHxm1HqSfda5W2f7rQGz7DYOAT7rhYHM8TXDLXs-AUAA-C33bDSjIKxxvWw2vBmbjwR_0CzuRFlGZFwVIW5Wf7i6IseZXQQrCIRSIVvEhlQuOKlYzHaUnP6gtKKCOMZlGa5CxfFSWN44oXWZylSSoYiolsoFYrj3LVmt1ZuEK_SKOMxWcKuFQ2vOhRquV3HAYRpSi5PjMXQTPe7yyKiaqts0curnYqPAX6Oja8wKTkxxfgKcEdWBuealBKfu9-z3NREkR44Tu-YWygVr2R7_6WcdYbdfH7jxTByP8JAAD__zyQ7ng">