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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] --inline crashed with assertion failure "UNREACHABLE"
        </td>
    </tr>

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

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

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

<pre>
    git version: ba89749cd24950c9c51f4cc64277ce0421d86d20

system: Ubuntu 20.04.6 LTS (Focal Fossa)

reproduced with: ```mlir-opt --inline a.mlir```

a.mlir:
```
module {
  llvm.func @malloc(i64) -> !llvm.ptr
  llvm.func @func2() -> vector<4xf16> {
    %cst0_i32 = spirv.Constant 0 : i32
    %1 = builtin.unrealized_conversion_cast %cst0_i32 : i32 to index
    %3 = llvm.mlir.constant(64 : index) : i64
 %41 = llvm.mlir.constant(4 : index) : i64
    %44 = llvm.mlir.constant(0 : index) : i64
    %54 = llvm.mlir.constant(32 : index) : i64
    %56 = llvm.mlir.constant(1 : index) : i64
    %65 = builtin.unrealized_conversion_cast %44 : i64 to index
    %67 = builtin.unrealized_conversion_cast %41 : i64 to index
    %69 = builtin.unrealized_conversion_cast %56 : i64 to index
    %75 = builtin.unrealized_conversion_cast %54 : i64 to index
    %83 = llvm.mlir.zero : !llvm.ptr
    %89 = llvm.sub %3, %56  : i64
    %184 = llvm.getelementptr %83[1024] : (!llvm.ptr) -> !llvm.ptr, i32
    %185 = llvm.ptrtoint %184 : !llvm.ptr to i64
    %186 = llvm.add %185, %3  : i64
    %187 = llvm.call @malloc(%186) : (i64) -> !llvm.ptr
    %188 = llvm.ptrtoint %187 : !llvm.ptr to i64
    %189 = llvm.add %188, %89  : i64
    %190 = llvm.urem %189, %3  : i64
    %191 = llvm.sub %189, %190 : i64
    %192 = llvm.inttoptr %191 : i64 to !llvm.ptr
    cf.br ^bb1(%65 : index)
  ^bb1(%309: index):  // 2 preds: ^bb0, ^bb5
    %310 = arith.cmpi slt, %309, %67 : index
    cf.cond_br %310, ^bb2, ^bb6
 ^bb2:  // pred: ^bb1
    %328 = arith.addi %309, %69 : index
    cf.br ^bb1(%328 : index)
  ^bb6:  // pred: ^bb1
    %402 = llvm.alloca %56 x !llvm.array<2 x i64> : (i64) -> !llvm.ptr
    %403 = llvm.getelementptr %402[0, 0] : (!llvm.ptr) -> !llvm.ptr, !llvm.array<2 x i64>
    %404 = llvm.load %403 : !llvm.ptr -> i64
    %405 = builtin.unrealized_conversion_cast %404 : i64 to index
    cf.br ^bb19(%65 : index)
  ^bb19(%407: index):  // 2 preds: ^bb18, ^bb29
    %408 = arith.cmpi slt, %407, %405 : index
    cf.cond_br %408, ^bb20, ^bb30
 ^bb20:  // pred: ^bb19
    cf.br ^bb21(%65 : index)
  ^bb21(%409: index):  // 2 preds: ^bb20, ^bb28
    %444 = arith.addi %409, %69 : index
    cf.br ^bb21(%444 : index)
  ^bb30:  // pred: ^bb19
 cf.br ^bb31(%65 : index)
  ^bb31(%486: index):  // 2 preds: ^bb30, ^bb53
    %487 = arith.cmpi slt, %486, %69 : index
    cf.cond_br %487, ^bb32, ^bb54
  ^bb32:  // pred: ^bb31
    cf.br ^bb33(%65 : index)
 ^bb33(%488: index):  // 2 preds: ^bb32, ^bb52
    %643 = arith.addi %488, %69 : index
    cf.br ^bb33(%643 : index)
  ^bb54:  // pred: ^bb31
 cf.br ^bb67(%65 : index)
  ^bb67(%695: index):  // 2 preds: ^bb66, ^bb77
    %696 = arith.cmpi slt, %695, %69 : index
    cf.cond_br %696, ^bb68, ^bb78
  ^bb68:  // pred: ^bb67
    %732 = arith.addi %695, %69 : index
    cf.br ^bb67(%732 : index)
  ^bb78:  // pred: ^bb67
 %749 = builtin.unrealized_conversion_cast %56 : i64 to index
    cf.br ^bb79(%65 : index)
  ^bb79(%756: index):  // 2 preds: ^bb78, ^bb89
 %757 = arith.cmpi slt, %756, %749 : index
    cf.cond_br %757, ^bb80, ^bb90
  ^bb80:  // pred: ^bb79
    %794 = arith.addi %756, %69 : index
    cf.br ^bb79(%794 : index)
  ^bb90:  // pred: ^bb79
 cf.br ^bb121(%65 : index)
  ^bb121(%924: index):  // 2 preds: ^bb120, ^bb131
    %925 = arith.cmpi slt, %924, %69 : index
    cf.cond_br %925, ^bb122, ^bb132
  ^bb122:  // pred: ^bb121
    cf.br ^bb127(%1 : index)
  ^bb127(%942: index):  // 2 preds: ^bb126, ^bb128
    %958 = arith.addi %942, %69 : index
    cf.br ^bb127(%958 : index)
  ^bb132: // pred: ^bb121
    cf.br ^bb133(%65 : index)
  ^bb133(%981: index): // 2 preds: ^bb132, ^bb143
    %982 = arith.cmpi slt, %981, %75 : index
    cf.cond_br %982, ^bb134, ^bb144
  ^bb134:  // pred: ^bb133
    cf.br ^bb139(%1 : index)
  ^bb139(%999: index):  // 2 preds: ^bb138, ^bb140
    %1015 = arith.addi %999, %69 : index
    cf.br ^bb139(%1015 : index)
  ^bb144:  // pred: ^bb133
    cf.br ^bb169(%65 : index)
  ^bb169(%1157: index):  // 2 preds: ^bb168, ^bb179
    cf.br ^bb171(%65 : index)
  ^bb171(%1159: index):  // 2 preds: ^bb170, ^bb178
    cf.br ^bb173(%1 : index)
  ^bb173(%1173: index):  // 2 preds: ^bb172, ^bb177
    cf.br ^bb175(%1 : index)
  ^bb175(%1175: index):  // 2 preds: ^bb174, ^bb176
    %1177 = builtin.unrealized_conversion_cast %1173 : index to i32

    // Function call of __mlir_math_ipowi_i32
    %1189 = spirv.FunctionCall @__mlir_math_ipowi_i32(%1177, %1177) : (i32, i32) -> i32
    cf.br ^bb175(%65 : index)
  }
  spirv.func @__mlir_math_ipowi_i32(%arg0: i32, %arg1: i32) -> i32 "None" attributes {llvm.linkage = #llvm.linkage<linkonce_odr>, sym_visibility = "private"} {
    %cst0_i32 = spirv.Constant 0 : i32
    %cst1_i32 = spirv.Constant 1 : i32
 %cst-1_i32 = spirv.Constant -1 : i32
    %0 = spirv.IEqual %arg1, %cst0_i32 : i32
    cf.cond_br %0, ^bb1(%cst1_i32 : i32), ^bb2
 ^bb1(%1: i32):  // 6 preds: ^bb0, ^bb5, ^bb6, ^bb7, ^bb7, ^bb10
 spirv.ReturnValue %1 : i32
  ^bb2:  // pred: ^bb0
    %7 = spirv.BitwiseAnd %arg1, %cst1_i32 : i32
    %8 = spirv.INotEqual %7, %cst0_i32 : i32
    cf.cond_br %8, ^bb1(%cst-1_i32 : i32), ^bb1(%cst1_i32 : i32)
  }
}
```

trace:
```
unimplemented spirv.ReturnValue in inliner
UNREACHABLE executed at /data/bin/llvm-project/mlir/lib/Dialect/SPIRV/IR/SPIRVDialect.cpp:98!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /data/bin/llvm-project/build/bin/mlir-opt --inline a.mlir
 #0 0x0000562d0a91701f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/bin/llvm-project/build/bin/mlir-opt+0x160201f)
 #1 0x0000562d0a914074 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f5211db5420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #3 0x00007f52118a000b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
 #4 0x00007f521187f859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
 #5 0x0000562d0a93ac4e (/data/bin/llvm-project/build/bin/mlir-opt+0x1625c4e)
 #6 0x0000562d0c2cfa89 (anonymous namespace)::SPIRVInlinerInterface::handleTerminator(mlir::Operation*, mlir::Block*) const SPIRVDialect.cpp:0:0
 #7 0x0000562d0d5ca033 inlineRegionImpl(mlir::InlinerInterface&, mlir::Region*, mlir::Block*, llvm::ilist_iterator<llvm::ilist_detail::node_options<mlir::Operation, true, false, void, false>, false, false>, mlir::IRMapping&, mlir::ValueRange, mlir::TypeRange, std::optional<mlir::Location>, bool, mlir::CallOpInterface) InliningUtils.cpp:0:0
 #8 0x0000562d0d5cc85c mlir::inlineCall(mlir::InlinerInterface&, mlir::CallOpInterface, mlir::CallableOpInterface, mlir::Region*, bool) (/data/bin/llvm-project/build/bin/mlir-opt+0x42b785c)
 #9 0x0000562d0d53e8a6 inlineCallsInSCC((anonymous namespace)::Inliner&, (anonymous namespace)::CGUseList&, (anonymous namespace)::CallGraphSCC&) Inliner.cpp:0:0
#10 0x0000562d0d54069d mlir::LogicalResult llvm::function_ref<mlir::LogicalResult ((anonymous namespace)::CallGraphSCC&)>::callback_fn<(anonymous namespace)::InlinerPass::runOnOperation()::'lambda'((anonymous namespace)::CallGraphSCC&)>(long, (anonymous namespace)::CallGraphSCC&) Inliner.cpp:0:0
#11 0x0000562d0d5418a3 (anonymous namespace)::InlinerPass::runOnOperation() Inliner.cpp:0:0
#12 0x0000562d0d5088ee mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/bin/llvm-project/build/bin/mlir-opt+0x41f38ee)
#13 0x0000562d0d508dca mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/bin/llvm-project/build/bin/mlir-opt+0x41f3dca)
#14 0x0000562d0d5095f4 mlir::PassManager::run(mlir::Operation*) (/data/bin/llvm-project/build/bin/mlir-opt+0x41f45f4)
#15 0x0000562d0d4fa363 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#16 0x0000562d0d4fb834 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, llvm::ThreadPool*) MlirOptMain.cpp:0:0
#17 0x0000562d0d4fb9e4 mlir::LogicalResult llvm::function_ref<mlir::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&)::'lambda'(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) MlirOptMain.cpp:0:0
#18 0x0000562d0d5facd4 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) (/data/bin/llvm-project/build/bin/mlir-opt+0x42e5cd4)
#19 0x0000562d0d4f4247 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/bin/llvm-project/build/bin/mlir-opt+0x41df247)
#20 0x0000562d0d4fbb31 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/bin/llvm-project/build/bin/mlir-opt+0x41e6b31)
#21 0x0000562d0d4fbf96 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/bin/llvm-project/build/bin/mlir-opt+0x41e6f96)
#22 0x0000562d0a84e5eb main (/data/bin/llvm-project/build/bin/mlir-opt+0x15395eb)
#23 0x00007f5211881083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#24 0x0000562d0a8e737e _start (/data/bin/llvm-project/build/bin/mlir-opt+0x15d237e)
Aborted (core dumped)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcW1tzpDiW_jX4ReEMIYnbgx_SaXvGEeUuh109rxkCRFrbpGCEqLb7129I3ASGTFz27vZORVWZBJ1zvnM_EmlaVfwgGLtyvGvHu7mgtXop5BUVhXg7FnX1sHu-iIv07erAFfjJZMUL4eAtiGkYBSRKUkQiDyZR4rkZSRKfoCBIGCTITUM_RdCBNw7cNv9Xb5ViR039e1wLVQMEN5BsfPDtxzNwUHhXJDQHd0VVUQdFNqVkpSzSOmEp-JOrF83C8WHz95hzeVmUClxecpFzwQDd6Hv9AptR-wi3HydrjkVa5ww4wXXzGYA8_3ncZLVIgEPgkeZ5kTgo5D5xUAQuHXwLHOSaRaWSs0T6J3JQ2BP8ZIkqpIN35DVzfcNikAeAg7ykUnDPMQIOvgFVyeXPza4QlaJCAQi08hyjEYVrlsY1zxUXm1pIRnP-F0v3SSFap-0TWqkJd8MIqAJwkbLXEUdsOBpNtMU2SQvAQaFPGlJDg6Lmg09acgd5xF0mPknbiCZkmRyeJ_dOkHdan6T3l-nd8-S-9wFfENLxmPeCH3yEmXuGWfQBZsYKJ5gFH1HTO6NmOI22v5gsDMlMdjUU0UBR1bGJWAftWuSzjnFDKzAOTLGcHZlQpZINBMe7diEijnfTSg5t4XPpjnbvEzH0BiGlkqrgQg3SRwoZW7wDaUUfTdOWZ6saXtIsGIgSmuejYtVw7cL1fPVqWYZLegTr9Ihm9AhbPcJoQZEIDlS1ZMeW1Rn1I_ddMAxEDc85KjRQcaFU0UZCw66P1lkLJdkmlsDxbuPYbUxs0n4oDd1SewmG0WgJ1s_RnYPuAAKlZGllDKspoAGvr7xxVXYbA1HJ1csmOZYcVLnqzAM7nf3AAmODTgqR7mPZsuqFoP7K76p4c9uCqAH2-NwxKhRaqGia8gmcaAHOxIYNnwUj-ivBEGj51eQAbavCa-9LKiV9c_AOgVcTFzoR1ucGgfhEISEQOd61sS38WC1ZRjcRb9WxvKDpgGmclkbGu-YKP9Sf4KnKbXswWpEG7RoCg7V54IZDjEYTPcLlTNASuivvfCoQaIkZsgLDUTLA5QCMZm2CVpSGbg1ZXxsshCicDE5kJg_J-jzs0RCyDBmvMITFE6-wQreGhP5aK2CrROKxFdpuOB8ZuhOeNoYdGGEwRMNQJD0yRr9cJ7E7a2eMT9lktISE4WqTWAjHU4lP8Fxg9P34bGD0gAle9qJHztvB4ukH5wOjXxN5a63g-70VgmAy__rLgaElrA8MPxqk-EPxCMIx-nDRIP4YWtBu9sYOWoFpasxgssMZ4QlW4NE8yJdtFCyEwYoO0a0JvNV1IBisH0aWDt6JIqDZt1dkhbMDb6gC4VB2IjjCHi6XxWDcuoJorkwPoM46uzdTdKJMRyvw2A18TbfqF0WIrG7hVr9y8XhWi5C37CUtY31GRsgbxCBkiUQTFU5MtWi-XLuozS73lGnaNRFB603jW5jHvTzy5mZqzXztTN0D8k5M1W7TvD5kjdPda7IoCt2pOZasYfUvl4x7ehSiE4ESun1irwiU0A4OYokkEw2W25nWbt400flA6dZE0eqRz8WhhROO97HQ9eYiJVq_--pRN6yWgJNfMIi_Zl_QLXJdb_3OwGq7bjA_gLvBmprWLXJdb71DAquoBeGCdHw-GPo1-mq1cCuC7RlnJNxbIdzrha8er9zASpnAH4eiG3zkvFLrPKAz00NXrG22BsZdLRLFCwHM8VaRgf3-mHO5P1L1sudl8SffvzuK686gmhP0jsOuPR-bZ9DZo9s_NpfD0VlTo8yPdhM_EjvngaXgC266ywZg98LgBDAqD6artzCaO25_Z0AEHIR-KwRzEAJUKcnjWrEKOMF1c2rAxR_0wIx1HITtew7e6atCJGxfpNLBt1pS9Xbc_-QVj3nO1VtLh0rJf1KlhTjBzRe8xUgq5S5RuBOKZvnl4vrLKUEjAlpr72__XdO8t2Jj0OnbkaU2YuV_4xsLfOcO63zN2tl15cZaZ-Wbf-IkcDik6zccM1du1x8aLZ-YqqX4F81rBoZ6MJmKlmeicbMJLPNdc_Unr9hWpO9N6M6b0EHtVNM64LdC9T4IPuiAcMYBl4seOOGkaT4OF3MvEJWkCVt6f1gLfiyb00CWztifC9C8omwPFH__7el2u_vn9vrbLWCvLKk1GdXF8S6lijroLubCQXc6QS9LWfwXS5SD7swrTHSX89hBdzec5s3t58f7p3856O7-qfvQPtskZengbRQ63Uj3-O12-3wLqjo-cgUoiOsDkKwspNJl-EWpUkdgEw8Hrl7qeJMUxxbJe0C8qmpW6dihIgVcJHmdMqBeGEgkrV5ATJM_jOE2jfhnRZM_QFofy96ScAPMn0dZHCQ9AioPtbZj1U6Mp-yh203aP1x8H9wVDgwBfIUQQs9HKaSRG0A3M8epGg3eVm9Vc_EouVAG6w_jdRQOiyT9c19USjJ6dJoxngtlOoUOtF-A66Br-Or6EEE3s86CEHYnaAkMCHjmB0Hzf1KR5kzqxtQIb25XrcOh-dczQi2jIPOQ66axRxAE-71klSok20vVYm_i6jX09z65zLmoXy8Pom4elOpFMppuqmIDG8SE6A2ehRePxIQUQhgDSXnFVvBPNGffcCYYwnjEmYw5B1noRYDGxSrkFmeEQi8acfbGNsY0IeyznkReQthIim9LSVCS0dDES_9lCyDokVWlibWoiTOTx_dN0bgXismsrT94-2K8_4PJIxdUFToMui834O33kkmq5x0HbXV0Dk-u8yL5w9yNgHm1DWZqxSR0Aht56iUUYtyWsid24IW4P5b5SP47yE2SDAsauhPodlZK8pxXas-V1sl8d2L6KGWK8ry5I4qU7YtSK185eDdrkx1Qsmb6Z0bzylz8LHg63Gjmnv6hfdNS8umBliUXh3famXr_RMWBje__eCuH25VKm7sNWJqP0H4rkgZsIzUuinzMS0-y30vLwhEwVufi8LviS1UgnLgyCb3EYto4VbP-mDvfgZk-pHHOFheMgqHR9JOVlKA4CL1klH_RWHXMQuqDQeHqXjzvdkbqyZRsbdGa4Mzi3T9-r9g3XqmVy2me_0PS8sUg8XufMvnem7o3wLFKBPpRCuwYOvCE5k-sqnNl5VPWbob2kmWToLMJztviPV4druaR3qnpxr_PhIN362z6SKu298pafBdWwob9UgcFOT3GKXXaE65fAIjCvNBZ--X-cCf-cEOKz8lYpftpsWgsFoYhY1YY2NXxe_mj-F5qYduUlqaatjJHCW_QTIvzclPZCpq_Vbx6oIIemLQLVi3MNwzTLxmQiJvhkA1tVSuPp8qnCf2w8o-8ZNrAkyaql_Y6-V9uDZtIi7oXlZJm7tXtfHtqQdsbzIMW-yOVTKh7kRVNY2-b_KcNniZ0ZHAyMXjkZWSCs9N8NrbGhvs8QOJlZARwNM6lJKPYx6BkMivkcZs0g8HpYb5vzdULlSzdl2o8dTwXtUzYw0E6-LYz9iQ8Hr7dP-0KodireufKh5zL76V6oFzsCpHxg8UjAtbT-XT3J_rFISaglEXCquq6zjKzJVilXi34v2v2Tr0HdizkW8fKWp-yjNa5nrdyptgyjW4Ct-t1tte1g6geCSol39rng5wfZgfyaPJpu8pcwdRcESNf2iT_98y57NSlxjvrgL9heMy7fWXKzE4GfxuvDNPG3wLS-YSZ7BEymqR2wlRlztVWpI-TivN_od3_wyQ9uWKYFL5oG8S8JB13x2hSDgkiwXyi_aeVic9OGmmGSGDbEsFpa4mxu2jLduRLXmgz3E0OOZ6V5OLwxLITt08b4tMKMt98F89S0J0qmEX-lyj4P65JFvkjTUZ7JBoS5rEYHCkXnzzo83DksXgkanIEGrowxGC_z3mc7CtFpdpbctceWhIY4pEUMlaIBThgoOH_WZVShINhk7WNC6lYqpkmhWTm4J6lA5buJchFeoXTCEf0gl25AYQh9NzAv3i5YknoZxixlODM9xMYBLGLApjBzE1ilOALfoWg3j0jAj0Pef4mCOIEUxqhKEhT7KUOgexIeb4x7yoLebgw7xyuAoxC7yKnMcsr8ytsCDVvR5Dj3VzIK6N0XB8qh8CcV6oaGCiucvNrb4bAuxneF5iXFu2vmgFaVUyaV88Z5XktGXAQsl7cOAhd1DK_-vWXJkaH_w4AAP__N4OW8w">