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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] Sparse-buffer-rewrite pass crashes with  _sigtramp 
        </td>
    </tr>

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

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

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

<pre>
    MLIR built at commit https://github.com/llvm/llvm-project/commit/a0138390
Reproduced with: 
`mlir-opt --sparse-buffer-rewrite temp.mlir`

temp.mlir:
``` 
module attributes {llvm.data_layout = ""} {
  llvm.func @func(%arg0: i64, %arg1: !llvm.ptr<i8>, %arg2: !llvm.ptr<i8>, %arg3: i64, %arg4: i64, %arg5: i64, %arg6: !llvm.ptr<i8>, %arg7: !llvm.ptr<i8>, %arg8: i64, %arg9: i64, %arg10: i64, %arg11: !llvm.ptr<f64>, %arg12: !llvm.ptr<f64>, %arg13: i64, %arg14: i64, %arg15: i64) -> !llvm.struct<(struct<(ptr<i8>, ptr<i8>, i64, array<1 x i64>, array<1 x i64>)>, struct<(ptr<i8>, ptr<i8>, i64, array<1 x i64>, array<1 x i64>)>, struct<(ptr<f64>, ptr<f64>, i64, array<1 x i64>, array<1 x i64>)>)> {
    %0 = builtin.unrealized_conversion_cast %arg0 : i64 to index
    %1 = llvm.mlir.undef : !llvm.struct<(ptr<i8>, ptr<i8>, i64, array<1 x i64>, array<1 x i64>)>
    %2 = llvm.insertvalue %arg1, %1[0] : !llvm.struct<(ptr<i8>, ptr<i8>, i64, array<1 x i64>, array<1 x i64>)> 
    %3 = llvm.insertvalue %arg2, %2[1] : !llvm.struct<(ptr<i8>, ptr<i8>, i64, array<1 x i64>, array<1 x i64>)> 
    %4 = llvm.insertvalue %arg3, %3[2] : !llvm.struct<(ptr<i8>, ptr<i8>, i64, array<1 x i64>, array<1 x i64>)> 
    %5 = llvm.insertvalue %arg4, %4[3, 0] : !llvm.struct<(ptr<i8>, ptr<i8>, i64, array<1 x i64>, array<1 x i64>)> 
    %6 = llvm.insertvalue %arg5, %5[4, 0] : !llvm.struct<(ptr<i8>, ptr<i8>, i64, array<1 x i64>, array<1 x i64>)> 
    %7 = builtin.unrealized_conversion_cast %6 : !llvm.struct<(ptr<i8>, ptr<i8>, i64, array<1 x i64>, array<1 x i64>)> to memref<10xi8>
    %8 = llvm.mlir.undef : !llvm.struct<(ptr<i8>, ptr<i8>, i64, array<1 x i64>, array<1 x i64>)>
    %9 = llvm.insertvalue %arg6, %8[0] : !llvm.struct<(ptr<i8>, ptr<i8>, i64, array<1 x i64>, array<1 x i64>)> 
    %10 = llvm.insertvalue %arg7, %9[1] : !llvm.struct<(ptr<i8>, ptr<i8>, i64, array<1 x i64>, array<1 x i64>)> 
    %11 = llvm.insertvalue %arg8, %10[2] : !llvm.struct<(ptr<i8>, ptr<i8>, i64, array<1 x i64>, array<1 x i64>)> 
    %12 = llvm.insertvalue %arg9, %11[3, 0] : !llvm.struct<(ptr<i8>, ptr<i8>, i64, array<1 x i64>, array<1 x i64>)> 
 %13 = llvm.insertvalue %arg10, %12[4, 0] : !llvm.struct<(ptr<i8>, ptr<i8>, i64, array<1 x i64>, array<1 x i64>)> 
    %14 = builtin.unrealized_conversion_cast %13 : !llvm.struct<(ptr<i8>, ptr<i8>, i64, array<1 x i64>, array<1 x i64>)> to memref<20xi8>
    %15 = llvm.mlir.undef : !llvm.struct<(ptr<f64>, ptr<f64>, i64, array<1 x i64>, array<1 x i64>)>
    %16 = llvm.insertvalue %arg11, %15[0] : !llvm.struct<(ptr<f64>, ptr<f64>, i64, array<1 x i64>, array<1 x i64>)> 
 %17 = llvm.insertvalue %arg12, %16[1] : !llvm.struct<(ptr<f64>, ptr<f64>, i64, array<1 x i64>, array<1 x i64>)> 
    %18 = llvm.insertvalue %arg13, %17[2] : !llvm.struct<(ptr<f64>, ptr<f64>, i64, array<1 x i64>, array<1 x i64>)> 
    %19 = llvm.insertvalue %arg14, %18[3, 0] : !llvm.struct<(ptr<f64>, ptr<f64>, i64, array<1 x i64>, array<1 x i64>)> 
 %20 = llvm.insertvalue %arg15, %19[4, 0] : !llvm.struct<(ptr<f64>, ptr<f64>, i64, array<1 x i64>, array<1 x i64>)> 
    %21 = builtin.unrealized_conversion_cast %20 : !llvm.struct<(ptr<f64>, ptr<f64>, i64, array<1 x i64>, array<1 x i64>)> to memref<10xf64>
 sparse_tensor.sort %0, %7, %14 jointly %21 : memref<10xi8>, memref<20xi8> jointly memref<10xf64>
    %22 = llvm.mlir.undef : !llvm.struct<(struct<(ptr<i8>, ptr<i8>, i64, array<1 x i64>, array<1 x i64>)>, struct<(ptr<i8>, ptr<i8>, i64, array<1 x i64>, array<1 x i64>)>, struct<(ptr<f64>, ptr<f64>, i64, array<1 x i64>, array<1 x i64>)>)>
 %23 = llvm.insertvalue %6, %22[0] : !llvm.struct<(struct<(ptr<i8>, ptr<i8>, i64, array<1 x i64>, array<1 x i64>)>, struct<(ptr<i8>, ptr<i8>, i64, array<1 x i64>, array<1 x i64>)>, struct<(ptr<f64>, ptr<f64>, i64, array<1 x i64>, array<1 x i64>)>)> 
    %24 = llvm.insertvalue %13, %23[1] : !llvm.struct<(struct<(ptr<i8>, ptr<i8>, i64, array<1 x i64>, array<1 x i64>)>, struct<(ptr<i8>, ptr<i8>, i64, array<1 x i64>, array<1 x i64>)>, struct<(ptr<f64>, ptr<f64>, i64, array<1 x i64>, array<1 x i64>)>)> 
 %25 = llvm.insertvalue %20, %24[2] : !llvm.struct<(struct<(ptr<i8>, ptr<i8>, i64, array<1 x i64>, array<1 x i64>)>, struct<(ptr<i8>, ptr<i8>, i64, array<1 x i64>, array<1 x i64>)>, struct<(ptr<f64>, ptr<f64>, i64, array<1 x i64>, array<1 x i64>)>)> 
    llvm.return %25 : !llvm.struct<(struct<(ptr<i8>, ptr<i8>, i64, array<1 x i64>, array<1 x i64>)>, struct<(ptr<i8>, ptr<i8>, i64, array<1 x i64>, array<1 x i64>)>, struct<(ptr<f64>, ptr<f64>, i64, array<1 x i64>, array<1 x i64>)>)>
  }
}


```
 
trace:
```console  
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 --sparse-buffer-rewrite temp.mlir
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  mlir-opt 0x0000000100d785bc llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1  mlir-opt                 0x0000000100d77624 llvm::sys::RunSignalHandlers() + 112
2  mlir-opt 0x0000000100d78c54 SignalHandler(int) + 344
3  libsystem_platform.dylib 0x00000001a56894c4 _sigtramp + 56
4  mlir-opt 0x00000001016f1050 getMangledSortHelperFunc(mlir::OpBuilder&, mlir::func::FuncOp, mlir::TypeRange, llvm::StringRef, unsigned long long, unsigned long long, bool, mlir::ValueRange, llvm::function_ref<void (mlir::OpBuilder&, mlir::ModuleOp, mlir::func::FuncOp, unsigned long long, unsigned long long, bool)>) + 764
5  mlir-opt 0x00000001016f0300 mlir::LogicalResult matchAndRewriteSortOp<mlir::sparse_tensor::SortOp>(mlir::sparse_tensor::SortOp, mlir::ValueRange, unsigned long long, unsigned long long, bool, mlir::PatternRewriter&) + 692
6  mlir-opt 0x00000001016efff4 (anonymous namespace)::SortRewriter::matchAndRewrite(mlir::sparse_tensor::SortOp, mlir::PatternRewriter&) const + 676
7  mlir-opt 0x0000000102217bd0 mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<mlir::LogicalResult (mlir::Pattern const&)>) + 1440
8 mlir-opt                 0x0000000101fd2328 mlir::applyPatternsAndFoldGreedily(llvm::MutableArrayRef<mlir::Region>, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig) + 3808
9 mlir-opt                 0x0000000101714fb8 (anonymous namespace)::SparseBufferRewritePass::runOnOperation() + 292
10 mlir-opt 0x0000000101f834dc mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) + 420
11 mlir-opt 0x0000000101f83a0c mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) + 320
12 mlir-opt                 0x0000000101f85388 mlir::PassManager::run(mlir::Operation*) + 1148
13 mlir-opt 0x0000000101f7e840 performActions(llvm::raw_ostream&, bool, bool, std::__1::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, bool, bool) + 504
14 mlir-opt                 0x0000000101f7e410 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool)::$_0>(long, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) + 704
15 mlir-opt                 0x0000000101fe902c mlir::splitAndProcessBuffer(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) + 656
16 mlir-opt 0x0000000101f7c838 mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool) + 216
17 mlir-opt                 0x0000000101f7cd2c mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) + 1208
18 mlir-opt 0x0000000100c1b0a0 main + 108
19 dyld 0x00000001053fd088 start + 516

```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWllv4zgS_jXMC5GApO6HPNg5dhqIkcBpDLD7YlASbXOGIrUklW73r1-IOiyfsTPpTmORILAVqlT86i4VQ43hC8nYNQjGILi9oJVdKn19o4RQpdK2MugiVfnqevLwZQrTigsLqYWZKgpu4dLa0gBvBMg9IPcLbpdVepWpApB7IV66r8tSq79YZgG5b54D5J4i7MVeggC6BWg0ZaVWeZWxHH7jdgm8EWxugBAVgutLVVp4eWlKqg27TKv5nOlLzb5pbhm0rCivaioQtuyaz_W6N-q5Nb8t90LllWCQWqt5WllmIIjGNeKrnFo6E3SlKguBdwsBIfVvdFtTNA9D6Cjnlcwg8FH9DUgMSED1AtUS8NAH5AY2K9jJRLB7prQaeDc8Bt7dmoK8SuHtcPV3VoKdlfBVvtGrFPEO12RXwj1C75F6HvobrPEeuXdodiXHu6LjtewJvATeXc_VWF1lFng3gMTD6y1Zt_5smVOt6Qp4Nxh-d0vNzX2rSXvvQ7ZY62z77zdukjgNrr0d1mpGLhpcGuDyqpKaUcF_sHyWKfnCtOFKzjJqbGuSmtyZBFoFuczZ9w1u2HFzJqrj9KqSOZvDoT_8bFUO0ZA1Gi4N0_aFior18dv4GQbBGIHg9leihBswvWMwSQuTgGCMPxSmfwym18L0QDAmHwozOAazSy4-CMYO8sdaPjyGNWixBiAY-x-PNTojUYS_FKZVsGCFZvP6JvrecBtCj3-rrJQcM3rYGj3-8KyE0TGcUYsz-fC0hPExnHGX5dGHJyZ8tBwlHVD80ampBnG0JGHUYSW_R2rC_hm5ycn2McmJ7EtOOHhDdnrv3nAD0NGqhPu-KTgtRb0z1KGXRkeBdp0TDk_LUT8JaKvU-CjWrn3C0Wlp6udiPVqhcNdD4fiMTPXzvIAcrVO466Jwckau-qnqJfiMbEXQL4a61Uy17Br8zbRmZpk0Sl8ZpR3Erhp0LQH24V-KSytWvbSjPQ0audlNjP2DByG0KiRn5czPCcEZE4JBZB3uAro2lZDXisCn7s-azmx4-eE37r5gEO-14vZpgDcYoNbs4UEC6VIe8V8r15_af5v7O0VqZiste2N8avi9kjsE0W17gNJfDD-7U5UuGprTF00ztnvykilplGCwpXp6uBs930FTpQW3kMK0WkDNyrpXsOr84yVuTMUMIPeQyhxymYkqZ9AuGcw0NUuY0uxvB-yq2f7Z0uxvmFdF2SNFVwAlT1otNC0g1YuqYNIa15ScfhC1xdwdaqnKQrMqUiWgpAUzEJCYSVNpBleqgkv6wpwfXzZE_AfTkMv6noZPo69_QKWhYdZJw-QL10rW0OAL1RCE6OHhz8ns-d-T8ePDl__cTWf1IyBEtRrLuk1yE3jr7NpJCtcioe-o-cEI5VEcpJnDUtN6I7MyzcWT5tI6sb4665J4TaTpt5kyVjNaAOIKPpf1dhCQMQzCZks82HL7ZxNCFBJ_H4RpJZ_5QlLxB5W5YNq4M7dmF4xJsw05LFkW-HCDASDxAKjn-w0LD0LBU7MylhWzUlA7V7q4yleCpwOWNAjjxM98ODN8YTUtyg1x_f04cDjHKEBwweyEyoVg-bPS9g8mSqbvm2PE7tjSGz2W44qLvAbqtLq-404c3VX90GO5effrqmRTKhesXl4r8tlqLhdTNq-XK-kOf3MolFy4j8OrqVJic4c_6wK3Z4sal63fSpqe_EXxHJ4o0sQdyG6Lsk_Q86G3ac0ZKApbMwcHLYQ8hAYYHtSCZ1RMmamEhQW12XIk82kT-bX5Hkvg3azpN15-WtW3VHcbyjhMeETZ_8xwT9RapmULvrFCo5cwaSMoPKQXNp_P_dqcVCq5KlRlmmxWunyQrAXoubuVLYW9RQP7Udf1xDbYozbqov3YCcFRmqNdjqOyFDyjVp2A9bFkmtbODcjodXhHoqK2ymZUtAwaiRrp2iJ9Rmi9gckhHz-Jb5t4fb8t_vFJ-R3Pc-KReKA9WpZi1W5iRjK_VyL_l2Ys52K1UWYmlaWpYKO6b5lu4Z-yRW2ZdlrQL99r9YN1hmn3eGZ2IMuQ2u26aqlvlJzzRV8cYhQ3YianiRlhf57Gr0aL8_-x6yV6lKatd7qSj3LgdX2xI12oYrQ_VOex5-fZQLKcWcpF58df1WNZbzPKadm7vq7kltmN2fH0wzEwklSsDDcTKumijoF19ulz06DY-qT1GowPikDR-SI88ZIJLrcjtybtkYXvLtNmMjDmi6y79LpFU3pPthgSNDs3N1rsT1Qzab_Iuer8dNS7Ya82cmK0xYEXx1u7d_LstfumOrruym-9H3sHzBWx2EewZLpulkYuyZhXmsROl923sXlDOpvhtjwsqWb5rHmtGTQyqtIZmyx0_Sa4P5QnD1-mN0pa9t22BvinSXDTgbrUuilD2_GitsPA_olGipiPD3ccb0G-q8tK8v9WbEeXE1YovWoy0H4j5GxOK2FnORPMssMPe3c75Wbb5k5r7k5GhajfyGZzuSHIRHD9WNoJ5fIV7_k9JHxPX1pT3HIqWGbromasXh2Il9O-20oDiD9DTQPadYe_hwZ3fKTp0vsYCk6MIZYgMqwXphTcjmT-pFXGjOnQ_yaR8X8RyUcp9ufGsB8HhIcKSRZ7w4L1mRHePSM0TSTuLBGdWqWyfCPCNi3TNkLZkjYtz-jI8OE0udreg3SdN473j3YynCKKYEG5bJ7oH0hgvhL5kDjw5jmKY2gs1c27Y9DpYWtaeZFfe3niJfSCXeMw8oIE4wBdLK9RGs4jEkR-HMQEU5qlNIqy1CNpRAMfBxf8miDiIYw9FJIgQFdZEgZBFrCApnnA4hT4iBWUiys3olZ6ceGGl9dBksTxhaApE8b9Uz4hkn2D7iYgBAS3F_razQnTamGAjwQ31qy5WG6F-29-p9_gFj7vnVWW1JhmKMqMG0_CwQzrotLi-u3DVyfC_wIAAP__qV3YyQ">