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

    <tr>
        <th>Summary</th>
        <td>
            [mlir][sparse] Assertion `expr.getPosition() < numSymbols  && "inconsistent number of symbols"' failed.
        </td>
    </tr>

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

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

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

<pre>
    Commit: ef31b272d252f8c806f24fc95c41bd2507720c7d

Command: `mlir-opt --sparsifier ell.mlir`

```mlir
#Sparse = #sparse_tensor.encoding<{
  map = [c](i, j) -> (c * 3 * i : dense, i : dense, j : compressed)
}>

func.func @tensor_add(%arg0: tensor<8x8xf32, #Sparse>) -> tensor<8x8xf32> {
 %result_out = tensor.empty() : tensor<8x8xf32>

  %result = linalg.add
 ins(%arg0, %arg0 : tensor<8x8xf32, #Sparse>, tensor<8x8xf32, #Sparse>)
 outs(%result_out : tensor<8x8xf32>) -> tensor<8x8xf32>

  return %result : tensor<8x8xf32>
}
```

Stack dump:

```
mlir-opt: /home/guest/llvm-project/mlir/lib/IR/AffineExpr.cpp:1473: LogicalResult mlir::SimpleAffineExprFlattener::visitSymbolExpr(AffineSymbolExpr): Assertion `expr.getPosition() < numSymbols
 && "inconsistent number of symbols"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace and instructions to reproduce the bug.
Stack dump:
0.      Program arguments: bin/mlir-opt --sparsifier ell.mlir
 #0 0x00005602561f9cab llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (bin/mlir-opt+0x1dedcab)
 #1 0x00005602561f698a llvm::sys::RunSignalHandlers() (bin/mlir-opt+0x1dea98a)
 #2 0x00005602561faeca SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #3 0x00007fee8e842790 __restore_rt (/nix/store/wb6rhpznjfczwlwx23zmdrrw74bayxw4-glibc-2.42-47/lib/libc.so.6+0x42790)
 #4 0x00007fee8e89fdcc __pthread_kill_implementation (/nix/store/wb6rhpznjfczwlwx23zmdrrw74bayxw4-glibc-2.42-47/lib/libc.so.6+0x9fdcc)
 #5 0x00007fee8e84265e gsignal (/nix/store/wb6rhpznjfczwlwx23zmdrrw74bayxw4-glibc-2.42-47/lib/libc.so.6+0x4265e)
 #6 0x00007fee8e829350 abort (/nix/store/wb6rhpznjfczwlwx23zmdrrw74bayxw4-glibc-2.42-47/lib/libc.so.6+0x29350)
 #7 0x00007fee8e8292b9 __assert_perror_fail (/nix/store/wb6rhpznjfczwlwx23zmdrrw74bayxw4-glibc-2.42-47/lib/libc.so.6+0x292b9)
 #8 0x000056025eae63c9 mlir::SimpleAffineExprFlattener::visitSymbolExpr(mlir::AffineSymbolExpr) (bin/mlir-opt+0xa6da3c9)
 #9 0x000056025e44de1e mlir::AffineExprVisitor<mlir::SimpleAffineExprFlattener, llvm::LogicalResult>::walkPostOrder(mlir::AffineExpr) (bin/mlir-opt+0xa041e1e)
#10 0x000056025e44dfc1 mlir::AffineExprVisitor<mlir::SimpleAffineExprFlattener, llvm::LogicalResult>::walkOperandsPostOrder(mlir::AffineBinaryOpExpr) (bin/mlir-opt+0xa041fc1)
#11 0x000056025e44de59 mlir::AffineExprVisitor<mlir::SimpleAffineExprFlattener, llvm::LogicalResult>::walkPostOrder(mlir::AffineExpr) (bin/mlir-opt+0xa041e59)
#12 0x000056025eae6879 mlir::simplifyAffineExpr(mlir::AffineExpr, unsigned int, unsigned int) (bin/mlir-opt+0xa6da879)
#13 0x000056025cd07bf9 mlir::sparse_tensor::SparseTensorEncodingAttr::translateShape(llvm::ArrayRef<long>, mlir::sparse_tensor::CrdTransDirectionKind) const (bin/mlir-opt+0x88fbbf9)
#14 0x0000560256ff0096 mlir::sparse_tensor::SparseTensorType::getDemappedType() const (bin/mlir-opt+0x2be4096)
#15 0x0000560256fefe11 (anonymous namespace)::DemapInsRewriter<(anonymous namespace)::GenericOpReinterpretMap, mlir::linalg::GenericOp>::matchAndRewrite(mlir::linalg::GenericOp, mlir::PatternR
ewriter&) const SparseReinterpretMap.cpp:0:0
#16 0x000056025e8434fc void llvm::function_ref<void ()>::callback_fn<mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern c
onst&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<llvm::LogicalResult (mlir::Pattern const&)>)::$_0>(long) PatternApplicator.cpp:0:0
#17 0x000056025e83f1ce mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Patter
n const&)>, llvm::function_ref<llvm::LogicalResult (mlir::Pattern const&)>) (bin/mlir-opt+0xa4331ce)
#18 0x000056025e818e49 (anonymous namespace)::GreedyPatternRewriteDriver::processWorklist() GreedyPatternRewriteDriver.cpp:0:0
#19 0x000056025e815521 mlir::applyPatternsGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) (bin/mlir-opt+0xa409521)
#20 0x0000560256f6e401 (anonymous namespace)::SparseReinterpretMap::runOnOperation() SparseTensorPasses.cpp:0:0
#21 0x000056025e8a6bfc mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (bin/mlir-opt+0xa49abfc)
#22 0x000056025e8a7a78 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstru
mentation::PipelineParentInfo const*) (bin/mlir-opt+0xa49ba78)
#23 0x000056025e8b0cbb llvm::LogicalResult llvm::function_ref<llvm::LogicalResult (mlir::OpPassManager&, mlir::Operation*)>::callback_fn<mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir:
:Operation*, mlir::AnalysisManager, bool, unsigned int)::$_2>(long, mlir::OpPassManager&, mlir::Operation*) Pass.cpp:0:0
#24 0x0000560256fa3963 mlir::sparse_tensor::SparsificationAndBufferizationPass::runOnOperation() (bin/mlir-opt+0x2b97963)
#25 0x000056025e8a6bfc mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (bin/mlir-opt+0xa49abfc)
#26 0x000056025e8a7a78 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstru
mentation::PipelineParentInfo const*) (bin/mlir-opt+0xa49ba78)
#27 0x000056025e8af164 mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) (bin/mlir-opt+0xa4a3164)
#28 0x000056025e8ae7a5 mlir::PassManager::run(mlir::Operation*) (bin/mlir-opt+0xa4a27a5)
#29 0x00005602562bd16f performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#30 0x00005602562bc609 llvm::LogicalResult llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef const&, l
lvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainCo
nfig const&)::$_0>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef const&, llvm::raw_ostream&) MlirOptMain.cpp:0:0
#31 0x000056025ec3aaa4 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::M
emoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef) (bin/mlir-opt+0xa82eaa4)
#32 0x00005602562b0ba3 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const
&) (bin/mlir-opt+0x1ea4ba3)
#33 0x00005602562b0f6c mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (bin/mlir-opt+0x1ea4f6c)
#34 0x00005602562b1239 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (bin/mlir-opt+0x1ea5239)
#35 0x00005602561dd75a main (bin/mlir-opt+0x1dd175a)
#36 0x00007fee8e82b285 __libc_start_call_main (/nix/store/wb6rhpznjfczwlwx23zmdrrw74bayxw4-glibc-2.42-47/lib/libc.so.6+0x2b285)
#37 0x00007fee8e82b338 __libc_start_main@GLIBC_2.2.5 (/nix/store/wb6rhpznjfczwlwx23zmdrrw74bayxw4-glibc-2.42-47/lib/libc.so.6+0x2b338)
#38 0x00005602561dd235 _start (bin/mlir-opt+0x1dd1235)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWl1T3DjW_jXiRkWXLH9fcGEamDf1hoKC1O5llywfN0rcsleSA51fvyXZjT-6G0gGsjNbOzWh2rJ0zvMcnS_ZZlqLtQQ4Q-E5Ci9OWGseanWmgdeSneR1sT1b1puNMMjPMJS-l9OYFjSkZcITEpU0KHka8sDLCxqSOKaExwUiGSKZXcdkYReiiGwqoU7rxuDTU90wpUUpQGGoqoW9gyLSLbI_3P9ulGSI-vd2OmDkX2BEfbcYVgakrtUCJK8LIdfIX6L4HJEM4w1rurnhOUfhBaKJQHSJvyKa4lPkX2JEE44RzbDv_gpsERYgNdh5s8uv7pLXm0aB1lAgmlpU8QXyLzvEZSv5wv7BKCAdrBUrCkQTREOm1sQK6MaRv0yekqfSp1b0MzUragdub6IF3DFDNFSg28qs6tY4ijsjbBqzdfpSfFDZDioeZLj1lZCsWi8sWpJhIfUItAPofh6WuUdg-RaSVk_dml7RhM5h3C_YZcdJgWmVnFA7aoP4YuxjnYR7w_g3XLSbBvnZzAsRyXaO6_yYXj3UG0D0at2CNoheVdX3zWmj6q_A7aXzWnpViRzRq093iF5lZSkkXD41asEbq8ELYt_K-lyvBWfVXYfZLfQz5Gf3YtNUMCy7qpgxIKG__V1oYe63m7yu7F1Ek27qeCi18jOtQRlRSxt9YPWvwdzWWtixZ29ZYtluurW6c7II0QgjSoXktdRCG5DGTspB4brEup9LKaIxLpmooFggkt1-vszuL7Fu840wmOG8XWMFTa0MNjV-MKbRlgC9ssYT5qHNF7ze9BbcN6TQugWN6BVmssBC8qotAJsHwFwx_YBzxr8ZxTj097VRLbfMtFWnoFF10fJuRd6uFwf2mSyw--9W1WvFNpipdbsBaSxOnAvZb-cLScvZyyeYPBFCSBgRGkZemXKWY8fKbZje6u7HrRLSOBBfLHBEk2GSYo-rWhsFbON2YImFNG6HaDKFgug5efIKKDjL-4BC1PdmGKI0YYcw3LXyXqwlq_6PyaICpXeOcEwNSxM2qKEzNQw4wxOBNt1a5EusxVrIsl4ZRDN7_b0WhfuZ9it0HxDE_esU-L2CuARIIAlonBK8WinQplawUgY7wFdSPCF65QYRvXrMI_XQ_JBfS_7jsXp8ov6PTaHUYxzkbPv0GJyuK5HzU7oI6GkQP8enHVzoehE5sk7XQDWYIknLgnO8WjXmQQErVt9EVa1cpFqXYV2cfRQ0p3yAFs6NFIWA19oZ9SPtE4UwgIimIGjqhwSzvP7ILXJKBgjxHALNU7xaMZf4Vg0oVauVzVAfiYjm6YAoGccHMIh8nv6Z1D4sPZDkjwQtiwrm8xGodAIqCArwAM8lW5n_sPpd0XwLZLocJZhJMbO11o0-surbba3NjSrgEJ1XiJDAA693OZvjyJxIyb3fR-SmAcVkoV8idC4kU9ub5nViJfcGYt7eDoXp32aHwnQgQuf-n8RjItpCFeV2LPuIyiVupTuZFLivJ9Prl7w_iUeQ_DEkXpA4LyeQxseJ3qBu6IsbuezPF5kx_V2jmNQVM3D_wJppEc-UYts7KJG_rGp7JnFd8Yu6lqr4YgVeCAWuffl_Ie0ZA9veyxzhmCRlnpcjjsGkLJclIWn0do5ftg10o2swF7BhTQOFG-x6g5eg0BwCkkYDlHAKBUrwPLuWyVpuN3WrsWQb0I1rgNJOrdP5Seo7eFTC2Gy4fGXFH9a_Bb9p7kBIA6pRYK5ZMzV3d7qZLXj2_A0z_CGTRa904oiHV06E39ogU_IOkWyH2vZtO2t19p2im7U71lrRJF6SwA9K7hqlUeDao6X1jJVynuXudjvzzIWzqrIN8aqUk9TQg8yaphKcmd3mv0TdZbnuhJAdZjymuzyOM69rV3f3BGCOSGaN1Bmsj5JX-R6Q83YhR9Lg2-T2PodosCJuIHHRTVO8Z98DWxxPt9gvPQ77Vv2rbdGf3x9Est-4RceqQeD7Hh-1ENMGLfESCNLX0tMfCqDYTm17ocT3XdvWqJqD1v-s1bdKWFguax5fdcBJ0hmsMKTjzoY1TbUTpZ1gUW0nhrmDtXOIaOoQV6r-ATvtvYB7MCP7jWd3kPvZy1qWYm0nWDfpD27HrEzSkA79DJ2eiMsIAvJqETiUMfuzcStv5MjpnXnHBezWdvzz06TFMe2rEhblJR_xLcAwUe2C6kt901hJWcGa5zhUrZw5oNZ7YXc8IDPJqq0W-ppJtu46ss6ab25ngpTlJR9MS2eUYhYnP03pVjRQCTlPK3bqM9Lo3TlOM5XWn9xDG3t8rtWBVLabgEj2fMTu7_Xwb5kCaT7Jst459ItOmuYsTgZL-lNL5oTn-bF--U-mrZ8x7etV_X3clryX5w7VkY6r45ThT_DHdu6BYJ41ucxPI_8NTa4obV0Vtcxkcd6WJSjxw107mxxPMMf63TROI3_wovC_L8VE_0sx75RiZr0fK70omAHYUXq2m6tlb-z39uxyHBnzvSgYkM36IAYxC19B9gKmF9TSmIWD2kmfE9G88KISN6DKWm2y7vH9K4_FtSn6eH9gCopVY8_loyx8X7eKw_VaIf_ySJtz_fnT3bKWBp7MnkWvK6FuGnPNhOwaoHGriUd39xPU7D0AzXlE0nctKM_cWyn-1cIe92vY1GrbJbmJrQooWVuZVQEVGDi-xlaeWZc-vn8H5cSkFSLZ0a16vY6NrPnWTf9w4gO6C8Eq4MY21tqo7b4XjT3FHnZmznLk0Pg7ybxxF49v4SsOP22vuc8YCyYVuRImk8Vtdz7aMfqPuPE7Bhki2V9nh_bk7AfPKDcaJeT6Dsqjw0cTeUKBsaF-zF4E0pzkzD8cHH_30B7FtaUevfC2FFiQs6E39P25kcqIHzVS37_wB9Z1KtnP7t1rDF-CXUZD_-cHM9ge9dN3gf3L-ELqD0-7_ekjZq8o4pDhDRPy6FvswotDNgiYv7rMaRLi1aoSOV9pw5RZ2ZK12on8oDeHVuuAaf4uM_f9ZIrJwkEB-ePzp_Plii7oIvxIcL4_9LHT15rW4tQPcQfrBZtTf8dv9zXNSXHmF6mfshM48-I4jIMwiOjJwxkhSUwgCsM4Z-BFwAMCqQdBTrlP4yg5EWeU0IgEJPUCPw7oIswpeGESB5DEfkoLFBDYMFEtrO8tarU-cV-QnHmpR0l6UrEcKu0-cqO0-0iHovDiRJ25707ydq1RQCqhjR4kGGEq92GcWxBeoPC8O2Wi8OIXPq_Bv_hxzUmrqrNf_4Cmt8D3M_rvAAAA__8YgFlx">