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

    <tr>
        <th>Summary</th>
        <td>
            convert-scf-to-spirv Pass crashed with segmentation fault
        </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/6c01b5cdaddce8df325020659d73cd7728778392

Reproduced with: 
`mlir-opt --convert-scf-to-spirv temp.mlir`


```mlir
module {
  func.func @func1(%arg0: tensor<2x2xi1>, %arg1: f32) -> f32 {
    %true = arith.constant true
    %c36976552_i32 = arith.constant 36976552 : i32
    %cst_4 = arith.constant 1.59615526E+9 : f32
    %true_5 = arith.constant true
    %c1998615473_i32 = arith.constant 1998615473 : i32
    %alloc_46 = memref.alloc() : memref<3xi32>
    %alloc_107 = memref.alloc() : memref<2xi32>
    %94 = scf.if %true_5 -> (i32) {
      scf.yield %c36976552_i32 : i32
    } else {
      scf.yield %c1998615473_i32 : i32
    }
    %214 = scf.if %true -> (memref<3xi32>) {
      scf.yield %alloc_46 : memref<3xi32>
    } else {
      %264 = arith.shrsi %94, %c36976552_i32 : i32
      scf.yield %alloc_46 : memref<3xi32>
    }
    memref.assume_alignment %alloc_107, 8 : memref<2xi32>
    return %cst_4 : f32
  }
}
```

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 --convert-scf-to-spirv 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                 0x00000001032c76f8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 72
1  mlir-opt                 0x00000001032c7c14 PrintStackTraceSignalHandler(void*) + 28
2  mlir-opt                 0x00000001032c5d18 llvm::sys::RunSignalHandlers() + 148
3  mlir-opt                 0x00000001032c94e4 SignalHandler(int) + 252
4  libsystem_platform.dylib 0x000000019fc254c4 _sigtramp + 56
5  mlir-opt                 0x0000000103a6c974 mlir::Type::getDialect() const + 28
6  mlir-opt                 0x0000000103a6c974 mlir::Type::getDialect() const + 28
7  mlir-opt                 0x00000001073813b0 mlir::Type::getContext() const + 24
8  mlir-opt                 0x000000010552bd84 mlir::spirv::PointerType::get(mlir::Type, mlir::spirv::StorageClass) + 32
9  mlir-opt                 0x00000001061a1388 void replaceSCFOutputValue<mlir::scf::IfOp, mlir::spirv::SelectionOp>(mlir::scf::IfOp, mlir::spirv::SelectionOp, mlir::ConversionPatternRewriter&, mlir::ScfToSPIRVContextImpl*, llvm::ArrayRef<mlir::Type>) + 240
10 mlir-opt                 0x00000001061a0b24 (anonymous namespace)::IfOpConversion::matchAndRewrite(mlir::scf::IfOp, mlir::scf::IfOpAdaptor, mlir::ConversionPatternRewriter&) const + 1016
11 mlir-opt                 0x00000001061a06bc mlir::OpConversionPattern<mlir::scf::IfOp>::matchAndRewrite(mlir::Operation*, llvm::ArrayRef<mlir::Value>, mlir::ConversionPatternRewriter&) const + 176
12 mlir-opt                 0x0000000107000b24 mlir::ConversionPattern::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const + 368
13 mlir-opt                 0x0000000107d211e8 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&)>) + 1356
14 mlir-opt                 0x0000000107021a78 (anonymous namespace)::OperationLegalizer::legalizeWithPattern(mlir::Operation*, mlir::ConversionPatternRewriter&) + 328
15 mlir-opt                 0x00000001070211cc (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) + 996
16 mlir-opt                 0x00000001070207bc (anonymous namespace)::OperationConverter::convert(mlir::ConversionPatternRewriter&, mlir::Operation*) + 64
17 mlir-opt                 0x0000000107004c58 (anonymous namespace)::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>, llvm::function_ref<void (mlir::Diagnostic&)>) + 568
18 mlir-opt                 0x0000000107004988 mlir::applyPartialConversion(llvm::ArrayRef<mlir::Operation*>, mlir::ConversionTarget&, mlir::FrozenRewritePatternSet const&, llvm::DenseSet<mlir::Operation*, llvm::DenseMapInfo<mlir::Operation*, void>>*) + 124
19 mlir-opt                 0x0000000107004e7c mlir::applyPartialConversion(mlir::Operation*, mlir::ConversionTarget&, mlir::FrozenRewritePatternSet const&, llvm::DenseSet<mlir::Operation*, llvm::DenseMapInfo<mlir::Operation*, void>>*) + 72
20 mlir-opt                 0x00000001061a5ed4 (anonymous namespace)::SCFToSPIRVPass::runOnOperation() + 392
21 mlir-opt                 0x0000000106ec44ac mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) + 512
22 mlir-opt                 0x0000000106ec4b7c mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) + 364
23 mlir-opt                 0x0000000106ec6dc0 mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) + 108
24 mlir-opt                 0x0000000106ec6b98 mlir::PassManager::run(mlir::Operation*) + 864
25 mlir-opt                 0x0000000106eabf94 performActions(llvm::raw_ostream&, bool, bool, llvm::SourceMgr&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, bool, bool) + 560
26 mlir-opt                 0x0000000106eabb28 processBuffer(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, bool, bool, bool, bool, bool, bool, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, llvm::ThreadPool*) + 496
27 mlir-opt                 0x0000000106eab8f0 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::operator()(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const + 204
28 mlir-opt                 0x0000000106eab804 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&) + 80
29 mlir-opt                 0x00000001070b692c llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::operator()(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const + 96
30 mlir-opt                 0x00000001070b6410 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) + 128
31 mlir-opt                 0x0000000106ea9244 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) + 320
32 mlir-opt                 0x0000000106ea944c mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, mlir::PassPipelineCLParser const&, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool, bool) + 296
33 mlir-opt                 0x0000000106eaa010 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) + 2912
34 mlir-opt                 0x0000000102ae9278 main + 148
35 dyld                     0x0000000120745088 start + 516
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztWltT4zgW_jXhRUXKku8PeQiBrqEKihRQPbX7kpJtJfGuYnllmSbz6_dIthM7CSDo7hl6aqiQOJZ0Lt-56OjEici2k9ub63uU1DlXiCqUis0mV2itVFmN3OmIfIHXKlfrOhnDGHzh_Kn7OC-l-A9LFXxt1sFFkDo48dOMZlnKomzpEt8hTuDHWeimWRiSKAwjNyYj53LkTJv3ewaEsjplGfoGrIAvaocDZ8NzeS5Khc7PU1E8ManOq3R5rsR5VebyCSm2Kcd6Eszt09wRaF5mhrm1AU6coVF40XxHaFkX6Vi_oZHn6E88ItGI-FSuHC2LYkUl5MidkWfynOORezUiM9RMwHoCKDkiMTqHEX3dp430PCVrYOheIipBPcCxqBQtFNL3BxNTN4jDwPfJItdkjld040izhTnD1ZVaeKdW4bEfBxiWBSD5RYw6mQ9lXPh2UuI4joCeF7ovybmfcVJSyrlIF15glm7YRrLl2NwzwDcCNrcBdfdZLwfQjylgJ7QiQU6RiBuswJvG-bIHgTEjUMkbqw6Micz0bc54dspeh5qGl4jxir1O4wjNYyoDuQk-JfhO7GPc3lCiZ4zXUX9BGy1S0Pe7ai2rvEG4DZQ3cPq4QPsvnQtUVb1hC8rzVbFh4Il9X9HSRG95hmSqlkU_ngbBsmO6v-hyTD_xKElTphPocIoOEMFZf-b85mr6cIWqOtGJl0IqXoEMpZAQeeL9iTgHAFgFF4gWGcqLlNcZQ2rNUCpptUYJTf9rhBs37B8U3EBZvSl30jowFM-lWEm6AZOuag1kZWCzTsYHtE1eF7VC1XaTCI4KumGV9lZIrbVkaCtqtKZPDBltmkn5H0yCAnpMovn08TckJKqYMsqw4imXojHxE5UIsL25-Xq7ePjX7cXdzfW_r-4Xegnc1iiWIi8MnHqLiveKor1Gh3_Os9P8YcclaRgsIyObXutOq23VXMwlEDZqPhqDk2g_SdJvC1EpySiYKdC-B3NNMJILFLYOhe1FSCHuD_g9gJdT_htYmjMJzJ9Eno3ItGMCmdAwIdZM_Ayf1PO-Lga8qi7LAhfstWxcazaxxzx0KHwPHcgoDUkPIZ4nIAZ41qLkVC2F3IyzLdzskYyXKfG91EOLKl-Bc4O_aSp-0BDxLeWiQRqHnpnbaP24LVlztWLqMqfchJhR3Ox0A5CDP4VLaMcldCPsJs5LXGaiUOz5BBev4RLZcYGEnmRRXxeTBtrQ0DHH5ICv3p6GEkFUnFz9oISkKzbjkNA7r-iScGwnXYApdqMI6aDQGZXrgJl9uatVWauvlENV4856zNNlc3G9vCtflotp8-SigDl6a42-h8Bgzswk1ApG5lQBcMU9-wbbqQ6NYDjzIV0-iof59f3X1o7Xm5KbsJ_1YncqJd3em03u0AuudnHmtZsWdmwhdRLi6cRNC1FsN6KumlxemuwX7wHYq9Pc21CVrqdF1mpljVx_aJrREvziPbj1vRs7uM0IGFurGyRpj1lfr5bdK04EQL-p-13JJNX-YGfA1m-vPoxB2EFA7BIJvGuLv8Lr_TruR94S1w3avIddO3EzgjGLjjlMy5LnKdXe84PF7ZtMHx71wkVTXCYCSp0B6ZZAo2GjbWvMF4mY9PW9RPaLb8QKcOD3rKq5sqPbbvNut59iz9J1CKZh9Fay2KF9w1bUFH3Nfd5-_R0qx87T7Kz0VjQ0e0nnWL61MjhNv1eZH6hBHHfmCGw1cMLEXoNGBtVp0Nb7AwXst6yhqo0CQVts4NA2E3mpb-9Op-XfDVeDWv1krh0I_e4ohUpuVUD9n6dHoeTvslpkrXoc9bMahXS2nVOpoFzs7bQfUemUOR_h1MfUkRW_SPEH64zcmvyBqV7C6CN0CWc7BsMvC3A8_ZaW18VSvLrEHHL01nrVcybcla44toaUhakNpO8L2F8Puu4oSqxrQJ9lb9aAUGm3Repcl_DNibgu7oqeTLsj5K4fTCwLM5Z6Hu1bL2OK5rzT-lHclZptVzB23A-2O320mL6WqPojUzisbqu8uqUFHExMEar3d_1ZF3DuLFjWP-D7uFPJrtDSKiXh-1Wa5yXjeXG4s-ipO0lfTcYf0nFYFFXVNXixNH0iXZ4fVU39CQ3nZqCVHaIOBrT3dvGwc0632yWIXQEIMAZZ6hxw7_TZgQb3dJPMKraPQGkzjtN1V-zKIS1ZEkdvSPaKTA3baAeIXeESMJosYw8BKd07mabHm99xo6ozeve5n_sgapmy29WxV-nfkXZ9hemPqEaHHtzVuEPZug21PccSu1pIg5KQCJVSpKyqLurl0rSgXsOkUlkztFjg5qIu8v_VbFEq_dvQfukt2wi57WieWpixJQV9FxnjTLGXF7eZ-tgeb33-HOQHtY3uYtyzVQ4YbY_2r8c1AJfNjTQ7z_W6gpXYFXzaSNGyH8q3cHVXqluaF5_YWH8N-O91kTZ8GpIj4i2c5lKYnKOzuN6d4f1zQHlo4kHX0ulSol05bRzL6fc0hvb4iAE_KUq7FhQIy_VPP4vlsGH1T0j93JDSLWIuitXnQfA4kkxZ0W2gtsenJIhJ-rcMlV8wA3Y7q2t3hNPW83B_Z61Knqtpkc0PCqLPofrfwrdenXG6rMVdk9K1PRbTmHjePxXTz0zvbfu4zZeu7emexp6X_nKWGaLcnddnN3Bir5gcdK9-DtxD2Mku0dl2Ayh18MtHiLaXka5p07U4OLY-KJkXK91Dtdavk7Pr_rh2zQFCWUxCKF9BroOHKnyUbXl2tHhIgDih5ztRBDanUrUNqODg4aMzNsFBEGM3JFF0lk3cLHZjeqZyxdnk5PM82ujNc0Pto5moYqtdEwcZZzqrJZ98_DElH-QJztYTLwnjyM2Im5AkilPXzVLHi4I4wUsXxzQ74zRhvJqM_IsRIQX7hgwJuB75l2f5hDiEYAz_Ifa8aBxHNApp4PjuksUR9kaewwBcPtZyjIVcncmJESmpVxUMcjBltR8EvXW3ixl2QJ_Wai3kZCY4F_rRrLpyzgz_iZH__5rlxtE">