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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] --test-memref-dependence-check crashes
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            mlir
      </td>
    </tr>

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

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

<pre>
    git version: 953838dceaf

system: `Ubuntu 18.04.6 LTS`

reproduce with: `mlir-opt --test-memref-dependence-check a.mlir`


a.mlir: 
``` 
 llvm.func @malloc(i64) -> !llvm.ptr
  llvm.mlir.global private constant @__constant_31x29xf32(dense<-3.802000e+03> : tensor<31x29xf32>) {addr_space = 0 : i32, alignment = 64 : i64} : !llvm.array<31 x array<29 x f32>>
 func.func @main() {
    %0 = llvm.mlir.undef : !llvm.struct<(i64, ptr)>
 %3 = llvm.mlir.constant(64 : index) : i64
    %4 = llvm.mlir.constant(0 : index) : i64
    %5 = llvm.mlir.undef : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
    %10 = llvm.mlir.constant(0.000000e+00 : f32) : f32
    %13 = llvm.mlir.constant(29 : index) : i64
    %14 = llvm.mlir.constant(1 : index) : i64
    %15 = llvm.mlir.zero : !llvm.ptr
 %44 = llvm.getelementptr %15[29] : (!llvm.ptr) -> !llvm.ptr, f32
    %45 = llvm.ptrtoint %44 : !llvm.ptr to i64
    %46 = llvm.add %45, %3 : i64
 %47 = llvm.call @malloc(%46) : (i64) -> !llvm.ptr
    %48 = llvm.ptrtoint %47 : !llvm.ptr to i64
    %49 = llvm.sub %3, %14 : i64
    %50 = llvm.add %48, %49 : i64
    %51 = llvm.urem %50, %3 : i64
    %52 = llvm.sub %50, %51 : i64
    %53 = llvm.inttoptr %52 : i64 to !llvm.ptr
    %54 = llvm.insertvalue %47, %5[0] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)> 
    %55 = llvm.insertvalue %53, %54[1] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)> 
    %56 = llvm.insertvalue %4, %55[2] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)> 
    %57 = llvm.insertvalue %14, %56[3, 0] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)> 
    %58 = llvm.insertvalue %13, %57[3, 1] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)> 
    %59 = llvm.insertvalue %13, %58[4, 0] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)> 
    %60 = llvm.insertvalue %14, %59[4, 1] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)> 
    %61 = builtin.unrealized_conversion_cast %60 : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)> to memref<1x29xf32>
    %64 = llvm.getelementptr %15[1] : (!llvm.ptr) -> !llvm.ptr, f32
    %65 = llvm.ptrtoint %64 : !llvm.ptr to i64
    %66 = llvm.add %65, %3 : i64
    %67 = llvm.call @malloc(%66) : (i64) -> !llvm.ptr
    %68 = llvm.ptrtoint %67 : !llvm.ptr to i64
    %69 = llvm.sub %3, %14 : i64
    %70 = llvm.add %68, %69 : i64
    %71 = llvm.urem %70, %3 : i64
    %72 = llvm.sub %70, %71 : i64
    %73 = llvm.inttoptr %72 : i64 to !llvm.ptr
    %74 = llvm.insertvalue %67, %5[0] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)> 
    %75 = llvm.insertvalue %73, %74[1] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)> 
 %76 = llvm.insertvalue %4, %75[2] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)> 
    %77 = llvm.insertvalue %14, %76[3, 0] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)> 
    %78 = llvm.insertvalue %14, %77[3, 1] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)> 
    %79 = llvm.insertvalue %14, %78[4, 0] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)> 
    %80 = llvm.insertvalue %14, %79[4, 1] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)> 
    %81 = builtin.unrealized_conversion_cast %80 : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)> to memref<1x1xf32>
    %collapse_shape_0 = memref.collapse_shape %81 [[0, 1]] : memref<1x1xf32> into memref<1xf32>
    %collapse_shape_1 = memref.collapse_shape %collapse_shape_0 [] : memref<1xf32> into memref<f32>
 affine.store %10, %collapse_shape_1[] : memref<f32>
    %collapse_shape_2 = memref.collapse_shape %61 [[0, 1]] : memref<1x29xf32> into memref<29xf32>
 %collapse_shape_3 = memref.collapse_shape %collapse_shape_0 [] : memref<1xf32> into memref<f32>
    affine.for %arg0 = 0 to 29 {
      %216 = affine.load %collapse_shape_2[%arg0] : memref<29xf32>
      %217 = affine.load %collapse_shape_3[] : memref<f32>
      %218 = llvm.fadd %216, %217 : f32
      affine.store %218, %collapse_shape_3[] : memref<f32>
 }
    %expand_shape = memref.expand_shape %81 [[0], [1, 2]] output_shape [1, 1, 1] : memref<1x1xf32> into memref<1x1x1xf32>
    return
  }
``` 
stack trace:

``` 
mlir-opt: /data/szy/MLIR/llvm-release/llvm-project/mlir/lib/Analysis/Presburger/IntegerRelation.cpp:1316: void mlir::presburger::IntegerRelation::mergeAndAlignSymbols(IntegerRelation &): Assertion `space.isUsingIds() && other.space.isUsingIds() && "both relations need to have identifers to merge and align"' 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 tosa.mlir --test-memref-dependence-check
 #0 0x000055f24f8d4158 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x1136158)
 #1 0x000055f24f8d1c6e llvm::sys::RunSignalHandlers() (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x1133c6e)
 #2 0x000055f24f8d4aed SignalHandler(int) Signals.cpp:0:0
 #3 0x00007f68fb871420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #4 0x00007f68faeae00b raise /build/glibc-LcI20x/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
 #5 0x00007f68fae8d859 abort /build/glibc-LcI20x/glibc-2.31/stdlib/abort.c:81:7
 #6 0x00007f68fae8d729 get_sysdep_segment_value /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:509:8
 #7 0x00007f68fae8d729 _nl_load_domain /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:970:34
 #8 0x00007f68fae9efd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
 #9 0x000055f2558e7711 (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x7149711)
#10 0x000055f252caea1b mlir::affine::MemRefAccess::getAccessRelation(mlir::presburger::IntegerRelation&) const (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4510a1b)
#11 0x000055f252cada7c mlir::affine::checkMemrefAccessDependence(mlir::affine::MemRefAccess const&, mlir::affine::MemRefAccess const&, unsigned int, mlir::affine::FlatAffineValueConstraints*, llvm::SmallVector<mlir::affine::DependenceComponent, 2u>*, bool) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x450fa7c)
#12 0x000055f2527c7fb7 (anonymous namespace)::TestMemRefDependenceCheck::runOnOperation() TestMemRefDependenceCheck.cpp:0:0
#13 0x000055f252d152b6 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x45772b6)
#14 0x000055f252d15be0 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+0x4577be0)
#15 0x000055f252d181b2 mlir::PassManager::run(mlir::Operation*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x457a1b2)
#16 0x000055f252d10a5a performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#17 0x000055f252d106ad 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
#18 0x000055f252dbcb25 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+0x461eb25)
#19 0x000055f252d0a695 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+0x456c695)
#20 0x000055f252d0a93f mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x456c93f)
#21 0x000055f252d0ac6e mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x456cc6e)
#22 0x000055f24f8b4c47 main (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x1116c47)
#23 0x00007f68fae8f083 __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:342:3
#24 0x000055f24f8b47be _start (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11167be)
``` 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcWl1v2ziz_jXMDRFDoj4oXeTCSRqcAg0atN29NShppPCsTOmQVNbZX39AUrI-bMfp7jrF-y62rSWRM88zM5yHpsyU4pUAuEHRLYrur1innxt582nL61e2g6usKV5vKq7xC0jFG4GCNU6jIAmSIgdWIm-NvLV6VRq25hGKvd-yTugO-8nKC1cx_vLjO4o9N05CK5uiywH_yfVzP35bc3ndtBpfX2tQ-noLWwnldQEtiAJEDtf5M-R_YLYyI_e2kLfu7xgz3to8sP-bC1zXL9tV2Ykco9DbsrpuckQSHoeIpPgaBZ8wIr4d1GppJrgZxt6qqpuM1biV_IVpwHkjlGZCG0ubzXC1CfwdSXdlQBBJChAKUHB3HawSj3ieB4jceoF1E6yxBqEaiYK7cU7wyQBB9JYVhdyoluWAUXCPPTuBG6t3mNW8ElswroN7HIfuWRwiem8_DhSYlOzVmsc7PFyQFO9w7yr4ZCiacExiwgUiSY_CRgBjRCLP-hqD0YkCypk3pWWXaxTcDQG9wyaGJO3dIBIFCyND0BBJBhaigJ113lPaAwhPz_XOTI1-CrsF3WO_wz2TffTwzt4yeTp-d6DrXPvLuE1hrzz7ny0Kx8GWTbr_OJp5I3ID45P0_TdC55-bu4zdXyCbWej6dWIyNPFTgYYaTI22WjpDKLolKYqGEk2mBo4tPnI3j0E4gdJqqRtuFkDvdoYH62ZRO_E4lRWFs2Yc9DW5J20e0HFszup61iisrSFQZxqH85ycAE3Pg07HqarLLNYesx8eKXLvkGPSjw-PLQp_HN9J2Dobx4LSjycHcPbDI__I-EnJcqF10xeCtWPHGsZHgzZd61wokPqF1R24uA0uUXTrjdV0kWWMJ5Cik5D2WYlCFN36H4gpPh2mAZJddR8IiZ6E5O8xxSi6tTH7yPwlp4Ht80cHYB-ZxPQdwBIU3YYfHLHYe0cq0wHYB0Ysdo0r63ituVh1QgKr-V9QmD1Yvxvd5EzpPYvLodINdttSFNxN93Aj2LOa6P8DSYxPSGJ8XhLjQ0mMj0piP_yMKsY_pYrxCVWMz6ti_HOqSA9VMR5UMT6iivSIKtI3VJEequJ-OD2iivSEKtLzqkhPq2L8i1SRnlZFOmSFfpgqGmfnJZF-sCTSd0gi_RWSSN-QxD2wXyGJ9A1J3AP7FZKYvEMS6a-QxORnJDH5SEn0DxQxb-qatQo26pm1sHEhdTNW82cDs-jWdrU-pENUjzjBXMy9n_Htv-37EKk9Clt6P-p79MzKkgtYKd1IVymDPCzBHLN-hgB5m0D8nuDtNy0LBrPNzKHr4CNih_EQvrKxMslk5fXnYbrBszMqGx_iOwHoZ9UNK46FzYBxxg4wLfdwvVn6DrPB2Qz2xiaNt-w3JcSP-7JwvqbnP_ighoifHC-iMxAQvR9rCXYtE8WQsjGZ8_uzJRjdW7dGz8kdJn1BNZ1uOz1M6B_6sxb4nsV60Cwk6E4Ke-GAz45ylWb5H1hLlgMK-oPf2YDh_Ng1u4eCaYbIg_rrFZGHxy-fvyHyYFJwLaEGpmC4bGXzv5BrRB7sITJ5qHmGyMNasPpVcYXIw5MElXWyAvP0s9BQgfwGNdO8Eau8bVGw9gM_Nn5fGl7g_jAaBet2nGmvF5PdzS3ICtaiWNe8Et9ft1lTK0SSxViMSGw77hqvlZEiey_27JHxiqvfFBfV50INZ7lmdIwb_Qxy9fYYREjW6Gcse08KC4DCrLdn9gKYFyA0L0Eq1-plBZiJwh1KI0IQobhkvIZihbz105dP6--fsOqyLdeY4ayrsIS2kdoa1LpVhjV5QOSh4vq5y1Z5s-1zcZgSrlQHJgfWJRd53RWA9TPgXDL1jDOW_2FLwvj-biuk6LatKxBv5VbTk2wqybaYyaoz38bU364QI7iF-ZeLvl7sCwvdKPcK4syrC9dZAw97O8_zvCgqSVgmRehHie0Orh7Uq3IfniQX2pL6YaueJOMgyf7cNEpLYFubxjuzvFxSk3-RGiK33s73g9iPTMn0BPwFAT-P4RiBb534zivB6v9hoqhBjoV3CYxBHsOIkSyDzKDAMzTmi6uLmbut-rXs2T_OStBboWWclFlC_ZB4eLORYFvzRuqei-sZuyTexOF1zUW3u65E5x60-lkCK1aqWXkOaxgSb0QaTn0wYOB5GZaMK9ON95yrmmf59Zf8M_F2-0uyCnwTQosfkYfVyly9qgJas2g6wXfuxouFIjpzaU2vchSsI9-0rh5GNIeRFEmUYpY1luP7YOjCxcHOsh4S44H2HuKlB0pSXIHeOMQbBZVZnpthk_0up1xow9xI9FZVOXN-I890yqR3TI853oh6Y2ZtimbLuPhn_lJqqibo3ykEydxhCmURv6NSclMjsa2RICiLeKyRdFLNUZQApb5_iWVE_TClvu8cm5U-7VURyRkwP5sInNuouM-PsP0G5TrPQfXrvwLtLveCR5L3i6PVO_fW9RJUw8j3mJ-NVP0F1YLR_ARV280fbZN3BO_3nX5G8VR4HKu-cf_k8E7YF_WFa_inpj_UTK_t9e9mNd0ZA5JxI35kbaaN7fr7ltX175Br-2r6uLmR312zbRsBzjfp7PdAazBrmvpCzT2MvJLRfEwVmaWK5rTMqHHMRCNet02nsGBbsNset2dCwfoHKO2COiFjVdkJaie-iq8tyKFQDZeTcxZSYTAFM0yFH5EsniSnAM147T5_bX80X9snptS6YK2New9hVj1mQB_c8eYE4uLJsGN9ZILZveqQk2XNXChHlJIsHnMULuORgffT8XjiLdSmCqdxcUP3NON_PUDTScbVZ7N47NaxkQdW5wMm-_oB-xOTIPRnUTbDOl5fMAcZeGMOokUOEj8jC-hDMI5W4DyWl8LM_IyMmOMFZo9FDLcgy0Zu17n9gnJmJ6x00W9En5mEYtNq09gmDa_pZA6PlTTfSo93YsPqrhEadvog4Y81l19b_ci4uGtEyauJjRRPnh5pEnRJLmbFpBV_aSqes_obqK7Wk_tlJyzzjfvufGoCIsmeeyf4_3VwwP0Rto18ve3K0i2A_fgCStbVelNADRpOz3G_IpoJyDID9hcxTidZXZuvaJtSzKRlEqT35vLifEZ095zVkOtvUHGl5ethcbxVAG4IIuHGs4aTuhHVxzJ5IzNnyjOZl2eWZySaEFdtzfVaFE-yMduSAesvKbr_wCXx5ojZjkxLLqpvUJ68fZlWHPuQkWhsxem8HDwWp9HxdfDftoovo3RxHqdjeIm3DG8alCfD229M8mfmtiDLTfzZkjkXm4txToNy5OwvOecx_CucfxG5_ZmTIbc4c8rCPKS4P1y4wImXH-chHb0Hi1OO0ksCvNnUPMs3SjOpNz9zzpGrbjhQch_tQ2vHnngEITF_977DJXOaAXZeL8WdZkPk9y8BroqboEiDlF3BjU-DIAmCOEqvnm9ImhdlnqdeQQiFCKIUaFxkJYQUgObkit8Qj4Q-8T2fEBqkKy-KC5bSwAvyEiJSoNCDLeP1yr7FaWR1ZY-mb3w_DWJ6VbMMamV_O0-Ie49AUHR_JW8sqayrFAq9miutRgua69r-3t5OiO7P_fDdHnmDuupkffP3T9J7xC835P8DAAD__xLTDJw">