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

    <tr>
        <th>Summary</th>
        <td>
            [MLIR]affine-super-vectorize Pass triggers Assertion Failure `relA.getSpace().isCompatible(relB.getSpace()) && "Spaces should be compatible."' 
        </td>
    </tr>

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

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

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

<pre>
    This bug has been fixed.

Test on [llvm 15](https://github.com/llvm/llvm-project/tree/release/15.x)
```
mlir-opt test.mlir -affine-super-vectorize
```
Test case:
```
#map0 = affine_map<(d0) -> (d0 mod 14)>
#map1 = affine_map<(d0) -> ((d0 floordiv 14) mod 14)>
#map2 = affine_map<(d0) -> ((d0 floordiv 14) floordiv 14)>
module {
  func.func @main() {
    %c0_i32 = arith.constant 0 : i32
    %1 = memref.alloc() : memref<15x14x14xi32, 1>
    affine.for %arg0 = 0 to 2940 step 4 {
      %3 = affine.apply #map0(%arg0)
 %4 = affine.apply #map1(%arg0)
      %5 = affine.apply #map2(%arg0)
 affine.parallel (%arg1) = (%5) to (%5 + 1) {
        affine.parallel (%arg2) = (%4) to (%4 + 1) {
          affine.parallel (%arg3) = (%3) to (%3 + 1) {
            affine.store %c0_i32, %1[%arg1, %arg2, %arg3] : memref<15x14x14xi32, 1>
          }
        }
      }
    }
 return
  }
}
```
Crash trace:
```
mlir-opt: /home/llvm15/mlir/lib/Analysis/Presburger/Utils.cpp:269: void mlir::presburger::mergeLocalVars(mlir::presburger::IntegerRelation &, mlir::presburger::IntegerRelation &, llvm::function_ref<bool (unsigned int, unsigned int)>): Assertion `relA.getSpace().isCompatible(relB.getSpace()) && "Spaces should be compatible."' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: mlir-opt test.mlir -affine-super-vectorize
 #0 0x000000000047f3aa mlir::impl::AsyncParallelForBase<(anonymous namespace)::AsyncParallelForPass>::clonePass() const AsyncParallelFor.cpp:0:0
 #1 0x000000000047f55b createParallelComputeFunction(mlir::scf::ParallelOp, (anonymous namespace)::ParallelComputeFunctionBounds const&, unsigned int, mlir::PatternRewriter&)::'lambda0'(unsigned long)::operator()(unsigned long) const::'lambda'(mlir::OpBuilder&, mlir::Location, mlir::Value, mlir::ValueRange)::operator()(mlir::OpBuilder&, mlir::Location, mlir::Value, mlir::ValueRange) const (.isra.431) AsyncParallelFor.cpp:0:0
 #2 0x000000000047dbd6 (anonymous namespace)::AsyncParallelForRewrite::matchAndRewrite(mlir::scf::ParallelOp, mlir::PatternRewriter&) const AsyncParallelFor.cpp:0:0
 #3 0x000000000047fc85 createParallelComputeFunction(mlir::scf::ParallelOp, (anonymous namespace)::ParallelComputeFunctionBounds const&, unsigned int, mlir::PatternRewriter&)::'lambda0'(unsigned long)::operator()(unsigned long) const::'lambda'(mlir::OpBuilder&, mlir::Location, mlir::Value, mlir::ValueRange)::operator()(mlir::OpBuilder&, mlir::Location, mlir::Value, mlir::ValueRange) const (.isra.431) AsyncParallelFor.cpp:0:0
 #4 0x00007fc6058e2980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #5 0x00007fc6047d2e87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #6 0x00007fc6047d47f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
 #7 0x00007fc6047c43fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
 #8 0x00007fc6047c4472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
 #9 0x0000000002ff7f6f _end (mlir-opt+0x2ff7f6f)
#10 0x0000000002fc2667 _end (mlir-opt+0x2fc2667)
#11 0x0000000002980b2d __GNU_EH_FRAME_HDR (mlir-opt+0x2980b2d)
#12 0x000000000297ff1e __GNU_EH_FRAME_HDR (mlir-opt+0x297ff1e)
#13 0x000000000297fbcb __GNU_EH_FRAME_HDR (mlir-opt+0x297fbcb)
#14 0x000000000297f9ae __GNU_EH_FRAME_HDR (mlir-opt+0x297f9ae)
#15 0x0000000000692cbd mlir::detail::DestinationStyleOpInterfaceInterfaceTraits::Model<mlir::linalg::PoolingNwcSumOp>::getTiedOpResult(mlir::detail::DestinationStyleOpInterfaceInterfaceTraits::Concept const*, mlir::Operation*, mlir::OpOperand*) (mlir-opt+0x692cbd)
#16 0x0000000000692c83 mlir::detail::DestinationStyleOpInterfaceInterfaceTraits::Model<mlir::linalg::PoolingNwcSumOp>::getTiedOpResult(mlir::detail::DestinationStyleOpInterfaceInterfaceTraits::Concept const*, mlir::Operation*, mlir::OpOperand*) (mlir-opt+0x692c83)
#17 0x0000000000692c1d mlir::detail::DestinationStyleOpInterfaceInterfaceTraits::Model<mlir::linalg::PoolingNwcSumOp>::getTiedOpResult(mlir::detail::DestinationStyleOpInterfaceInterfaceTraits::Concept const*, mlir::Operation*, mlir::OpOperand*) (mlir-opt+0x692c1d)
#18 0x0000000002abefdc __GNU_EH_FRAME_HDR (mlir-opt+0x2abefdc)
#19 0x0000000002cbd511 __FRAME_END__ crtstuff.c:0:0
#20 0x0000000002cbd4c0 __FRAME_END__ crtstuff.c:0:0
#21 0x0000000000692bba mlir::detail::DestinationStyleOpInterfaceInterfaceTraits::Model<mlir::linalg::PoolingNwcSumOp>::getTiedOpOperand(mlir::detail::DestinationStyleOpInterfaceInterfaceTraits::Concept const*, mlir::Operation*, mlir::OpResult) (mlir-opt+0x692bba)
#22 0x0000000000692b4d mlir::detail::DestinationStyleOpInterfaceInterfaceTraits::Model<mlir::linalg::PoolingNwcSumOp>::getTiedOpOperand(mlir::detail::DestinationStyleOpInterfaceInterfaceTraits::Concept const*, mlir::Operation*, mlir::OpResult) (mlir-opt+0x692b4d)
#23 0x00000000006928b0 mlir::LogicalResult llvm::detail::UniqueFunctionBase<mlir::LogicalResult, mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&>::CallImpl<mlir::Op<mlir::linalg::PoolingNwcMinUnsignedOp, mlir::OpTrait::OneRegion, mlir::OpTrait::VariadicResults, mlir::OpTrait::ZeroSuccessors, mlir::OpTrait::VariadicOperands, mlir::OpTrait::SingleBlockImplicitTerminator<mlir::linalg::YieldOp>::Impl, mlir::OpTrait::AttrSizedOperandSegments, mlir::OpTrait::OpInvariants, mlir::MemoryEffectOpInterface::Trait, mlir::DestinationStyleOpInterface::Trait, mlir::linalg::LinalgOp::Trait, mlir::RegionBranchOpInterface::Trait, mlir::ReifyRankedShapedTypeOpInterface::Trait, mlir::linalg::ConvolutionOpInterface::Trait>::getFoldHookFn()::'lambda0'(mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) const>(void*, mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) (mlir-opt+0x6928b0)
#24 0x0000000000692578 mlir::linalg::detail::LinalgOpInterfaceTraits::Model<mlir::linalg::PoolingNwcMinUnsignedOp>::getParallelDims(mlir::linalg::detail::LinalgOpInterfaceTraits::Concept const*, mlir::Operation*, llvm::SmallVectorImpl<unsigned int>&) (mlir-opt+0x692578)
#25 0x00000000029e4e5a __GNU_EH_FRAME_HDR (mlir-opt+0x29e4e5a)
#26 0x00000000029e5454 __GNU_EH_FRAME_HDR (mlir-opt+0x29e5454)
#27 0x00000000029ea868 __GNU_EH_FRAME_HDR (mlir-opt+0x29ea868)
#28 0x00000000029ea4d9 __GNU_EH_FRAME_HDR (mlir-opt+0x29ea4d9)
#29 0x00000000029e6733 __GNU_EH_FRAME_HDR (mlir-opt+0x29e6733)
#30 0x00000000029e5fed __GNU_EH_FRAME_HDR (mlir-opt+0x29e5fed)
#31 0x00000000029e5107 __GNU_EH_FRAME_HDR (mlir-opt+0x29e5107)
#32 0x00000000029e4e4b __GNU_EH_FRAME_HDR (mlir-opt+0x29e4e4b)
#33 0x00000000029e5454 __GNU_EH_FRAME_HDR (mlir-opt+0x29e5454)
#34 0x00000000029e6d1c __GNU_EH_FRAME_HDR (mlir-opt+0x29e6d1c)
#35 0x00000000029e6c3c __GNU_EH_FRAME_HDR (mlir-opt+0x29e6c3c)
#36 0x00000000029de27c __GNU_EH_FRAME_HDR (mlir-opt+0x29de27c)
#37 0x00000000029ddfa3 __GNU_EH_FRAME_HDR (mlir-opt+0x29ddfa3)
#38 0x00000000029dddaf __GNU_EH_FRAME_HDR (mlir-opt+0x29dddaf)
#39 0x00000000029ddccd __GNU_EH_FRAME_HDR (mlir-opt+0x29ddccd)
#40 0x0000000002b0ad09 __GNU_EH_FRAME_HDR (mlir-opt+0x2b0ad09)
#41 0x0000000002b0a2e5 __GNU_EH_FRAME_HDR (mlir-opt+0x2b0a2e5)
#42 0x00000000029dd039 __GNU_EH_FRAME_HDR (mlir-opt+0x29dd039)
#43 0x00000000029dd17a __GNU_EH_FRAME_HDR (mlir-opt+0x29dd17a)
#44 0x00000000029ddae6 __GNU_EH_FRAME_HDR (mlir-opt+0x29ddae6)
#45 0x0000000000411f4e (anonymous namespace)::ConvertShRUI::matchAndRewrite(mlir::arith::ShRUIOp, mlir::arith::ShRUIOpAdaptor, mlir::ConversionPatternRewriter&) const EmulateWideInt.cpp:0:0
#46 0x00007fc6047b5c87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#47 0x0000000000411dda (anonymous namespace)::ConvertShRUI::matchAndRewrite(mlir::arith::ShRUIOp, mlir::arith::ShRUIOpAdaptor, mlir::ConversionPatternRewriter&) const EmulateWideInt.cpp:0:0
Aborted (core dumped)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWl1z4yjW_jXKDRWXBPryRS6cOH6n3-qepJJ0b-3cuBAgm20ktIDSyfz6LZBsCzl2KzO7M7Nb3ZVOBJzzcDjn4YAQWGu-qRm7CpLrIFle4NZspbrS3xjD9KKQ9PXqacs1KNoN2GINCsZqUPIXRmdBuAzCRff7iWkDZA2C5FqI5wpESZAsA5hvjWl0gBYBXAVwteFm2xYzIqsArqxc_-eyUfIfjJgAroxiLIArxQTD2j5FyewlgPO-szTsf1yxElxdysYAw7SZ2RK4xGXJa3ap24apy2dGjFT8V_amujOa2G7Q4k2BAKIKNyEI0BJ0uOsKNwG6CWBOwwDOwWWAboErgUpSEMXWVHQ7VI8mqHcIpZBSUf7cwZwEhL8V0C_uUStJW8FAkF13ZQDKtiYz-wsEcVhhXjvE-VAEgAAmJFxz1JujuNnOiKy1wbUB1mcLwBH05DtXVKxSrJxhISTZAaNFXx2gmyh5iWL7Y9XhDYj2llqYbtyzUiqLiNWmC08IjARwHodAG9aA2LfV9Y4GfpvhphGvoA-ws8Jh7ZlmFeJTCtFbCrtuklNa8C2tXq7BCgvBBNjLRJ1fln1NYotG7koggNcgOorJwEHHiNBHjD3E-AziGUzkYyIPE53F3KNqIxU70MmG3HLFJqSdJ27Afgi7RxQky_fwpo9PtvSrRhVe8VBQzLSq3rXs6w8Pft64UVhvgVGYnEwtu9RlRxDA1VZWrE-GURLAlW22ZV4EcLWosXjVXAdwda-YLlq1Ybb1s-FCz0jTBGgB07mFepacAqeMFgFaNAdxV66Y2rCPkmDxBSsdwPy06IfasA1TD0xgw21mh6l16rsVXJp3Ajah2JZ1F65CSkektnYrEAW8NlbBL7s0Bd3YFloz1UGnoWJiMdsw89hYJ7ssMuP6RlYNNrwQtkoxcT0ScVS0dqUggNA1aKC3shUUFAyQvfosgDCAGSgxF_ul7v7j7eLxFui2qLgB2K2JijVSGcv5dy91XOuW2aACXNvREtFSBsyWAeL4U2Dy1XGo7_7RYPIV0LZq9qQKZx1t75XcKFwBrDZtxWqj3cR45-po01QIwpdw_y_OSoTxIOa8akT3tNCvNbnv88FKqmu3jNqFCNeyfq1kq0GNK6Y758_f1rrHWtsAu0YiZM1cTbcouMUEjFV6vofu_97uaGx3khSAKIYN2-labrSGrXoWeuTXpOwedsJ3TZdpzo7mBPK1bGuqO_P7STDm-KHne2wMU_UD-6a4sbM63cMHMBO4KigOA5gNJ4qQ9WYvJRumsJFqR_Ajsd4QH7JDPJhx11y3XNDegKGBNlt0_hrWfsGiZW9UPeB6w07b9p_rsGdLAPMZ1wrPYuTWnWnsgSP20IKm3wv-GLmPYJ9nsSHbRU13lRO49h1KvGs2oPFsIHnyYzb8mA3T2BP37MlKkoZJzuA8D8F6rZjbqK2V6bZ3_ebkJU_XaXwpeN2-XG7qtmtozFYxTGdazsIAXocvkUUZ7q5RMuwmzihkeQYU5truBVeF9YddRwUvyOXNl___9kuxL8KZDdjKRhaLAK5mM1t61ZQ1dj1ta_7SVTw7a-rWFh30jARokUT-gNORJXFWRgAX0o10miWGdt5wWq6TfNRJ5ndCYlRisF5jt6lZ233GusDTx97p7R-6Lud-l_m4yziDE2JHbNRSFzUUxhn0ojYfphZYllmZlmDNagp6QrtNrdXtGw_v7hBFoa9NYJpmp7Rdo6ftLfKWTwWkYL3-v58_r29_Wq8eFp9u1z8tH46xOlEPC_pYWVlGbBqWE_Ww0BirIMVUrIIUHlY8xprjyXbNsW9X4i0D6RySYvhyQJnBvN_OLZk2vHaZ5tG8CnbX2O28KjFh-4cnhbnbWQZo8UlSJgJ0c0ATvMZi06dxKQWvNz9_I49tddfsd3gbZp44o3fNA9OtMF4K_D3W3MiasMbsFpmFnxnvXN51OfSoxbXV1LXMj5zauczzaXrk0xz98Ok7fZojz6fZkU-jHzx9r08jn6e5l0dwwUpKJuWRTtTD8nM-KWgSRWDdg9z-vFyvAVFGm7Ys3To02E_YzXU4Vo9J-A71aMyOosB_DXbsg_Kn02PH0zepURR4GE4Ijxwa_0Wm23-LQ2NvrkE0dmhehN4WfsMJFh3k4DxsOLLPNf9ne3hn6g5TTkCcH8UBf6EUfn1wZ20H8YUxihetfVG99cUfKyzEF3ck9MEd89wMO1lJQfvurWK6D94NFuIN-Qkk-MTrz_3b2fgV-K5xYewLNXtgm6N3IE_mC1YcU046E_UZyV-Yko8tIUxrqc4J7iB7Up4TfeT1RrBrIclX6wpOuHliqrJUleqkJ_7OmaCDaeC8eLoTG7lH_qt1ljPokW26o74znms-1M92GEdin1gl1ettWTJiBrOoa-wQPPkzM--kznCsH93zXXNSuIvwtcI12U4Bf2C8fH3A9VdGH7e4YfTptXm3VTeyfpaitaM6oTpIUXYG_CTl11X_NeztY4k_f2IezjhuA5g_S06_m_n-QNPeSKd5EXrpNB6n0yTLTwRwmEJ3FPtdC5OfkwbR352aLHnlfzf5Tea8b2E652_vLO2cl5Ms97yc-C-aLGYJnvai6UQ9rHSElcRJPBHLinpY2QgL52k-EcuKelj5GCum86lYMZ17WPMRVpohNBHLig6x_K8s1gklm3iQ4UQ9rGiMFYXZVKwo9A5YEDziRDzxIMOJeljo38cJFI99T6NpLzOdqIc15n1K0GQsgnysEe8pg9lELCfqYY14T2mJJ_LLiXpY-RiL4nIqFsXekd3owG9OKSETuepEh1ixz_sixDScNh87UQ8rGmNBlkzFgizxsOB4jCGamCecqIeFxlhRNjGvOlEPKx5jYZZOxcIs9bD8w8A4isqYfe-Tjt0fMWUetw-fP3Q15z5suStA_TplNcab-uP2BcWN-yAyFOs61VzW5z6E3VatwIb9jVP76nf8IcMOeXSuXyQkt6lR8IKstcHKrCvM66kn7kS3u08N3aNrdDju2ALFsd99NvY4pfh_2OOLQirD3Ek-kYq5iwrDtWp3_-WCXiE6R3N8wa6iNMvyNI6y6GJ7VSQ4pnmUZARBHKcFTvOIYYbQHMY0h9kFv4IhRCEKUZRBmESzGGchKsIQlhjhErMgDlmFuZjZHdNMqs2Fu2NxlUZRGl8IXDCh3UVHCGv2DbjGAMIgWV6oK3c7o2g3OohDwbXRBxTDjXA3JD99_PAQJMu3b1GAe6w1MIpvNkzpwXWVFeaiVewPvLZy0Spx9dsvpDh__SsAAP__4saDjQ">