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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] Assertion `mightHaveTerminator()' failed
        </td>
    </tr>

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

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

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

<pre>
    git version: 59fd2878fce470f02058f43d4b818ed68ce04094

system: `Ubuntu 18.04.6 LTS`

reproduce with: `mlir-opt  a.mlir`


a.mlir:  
``` 
module {
 spirv.func @foo(%arg0: i1, %arg2: i2) "None" {
    spirv.mlir.selection {
      spirv.BranchConditional %arg0, ^bb1, ^bb2
    ^bb2:  // pred: ^bb0
      spirv.mlir.merge
    ^bb1:  // pred: ^bb0

 spirv.mlir.selection {
        spirv.BranchConditional %arg0, ^bb1, ^bb2
 ^bb2:  // pred: ^bb0
        spirv.mlir.merge
      ^bb1:  // pred: ^bb0
        spirv.mlir.merge
      }
    }
    spirv.Return
 }
}



``` 
stack trace:

``` 
mlir-opt: /data/szy/MLIR/llvm-project/mlir/lib/IR/Block.cpp:247: Operation *mlir::Block::getTerminator(): Assertion `mightHaveTerminator()' 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-project/install/bin/mlir-opt /data/szy/MLIR/seed/seed3/tmp.5QgpTOEve6.mlir
 #0 0x000055e27657fdb8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x11bddb8)
 #1 0x000055e27657d8be llvm::sys::RunSignalHandlers() (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x11bb8be)
 #2 0x000055e276580736 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #3 0x00007f00d5539420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #4 0x00007f00d4b7600b raise /build/glibc-LcI20x/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
 #5 0x00007f00d4b55859 abort /build/glibc-LcI20x/glibc-2.31/stdlib/abort.c:81:7
 #6 0x00007f00d4b55729 get_sysdep_segment_value /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:509:8
 #7 0x00007f00d4b55729 _nl_load_domain /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:970:34
 #8 0x00007f00d4b66fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
 #9 0x000055e27966a56f mlir::Block::getTerminator() (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x42a856f)
#10 0x000055e278a6ed6e mlir::spirv::MergeOp::verify() (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x36acd6e)
#11 0x000055e27889391a mlir::Op<mlir::spirv::MergeOp, mlir::OpTrait::ZeroRegions, mlir::OpTrait::ZeroResults, mlir::OpTrait::ZeroSuccessors, mlir::OpTrait::ZeroOperands, mlir::OpTrait::OpInvariants, mlir::ConditionallySpeculatable::Trait, mlir::OpTrait::AlwaysSpeculatableImplTrait, mlir::MemoryEffectOpInterface::Trait, mlir::OpTrait::IsTerminator, mlir::detail::Interface<mlir::spirv::QueryMinVersionInterface, mlir::Operation*, mlir::spirv::detail::QueryMinVersionInterfaceTraits, mlir::Op<mlir::spirv::QueryMinVersionInterface>, mlir::OpTrait::TraitBase>::Trait, mlir::detail::Interface<mlir::spirv::QueryMaxVersionInterface, mlir::Operation*, mlir::spirv::detail::QueryMaxVersionInterfaceTraits, mlir::Op<mlir::spirv::QueryMaxVersionInterface>, mlir::OpTrait::TraitBase>::Trait, mlir::detail::Interface<mlir::spirv::QueryExtensionInterface, mlir::Operation*, mlir::spirv::detail::QueryExtensionInterfaceTraits, mlir::Op<mlir::spirv::QueryExtensionInterface>, mlir::OpTrait::TraitBase>::Trait, mlir::detail::Interface<mlir::spirv::QueryCapabilityInterface, mlir::Operation*, mlir::spirv::detail::QueryCapabilityInterfaceTraits, mlir::Op<mlir::spirv::QueryCapabilityInterface>, mlir::OpTrait::TraitBase>::Trait>::verifyInvariants(mlir::Operation*) (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x34d191a)
#12 0x000055e2788920ee mlir::RegisteredOperationName::Model<mlir::spirv::MergeOp>::verifyInvariants(mlir::Operation*) (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x34d00ee)
#13 0x000055e27974b34c (anonymous namespace)::OperationVerifier::verifyOpAndDominance(mlir::Operation&) Verifier.cpp:0:0
#14 0x000055e27974b4a0 (anonymous namespace)::OperationVerifier::verifyOpAndDominance(mlir::Operation&) Verifier.cpp:0:0
#15 0x000055e27974b4a0 (anonymous namespace)::OperationVerifier::verifyOpAndDominance(mlir::Operation&) Verifier.cpp:0:0
#16 0x000055e27974a906 mlir::verify(mlir::Operation*, bool) (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x4388906)
#17 0x000055e27c6e76f5 mlir::parseAsmSourceFile(llvm::SourceMgr const&, mlir::Block*, mlir::ParserConfig const&, mlir::AsmParserState*, mlir::AsmParserCodeCompleteContext*) (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x73256f5)
#18 0x000055e279586f0f mlir::parseSourceFile(std::shared_ptr<llvm::SourceMgr> const&, mlir::Block*, mlir::ParserConfig const&, mlir::LocationAttr*) (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x41c4f0f)
#19 0x000055e279585e8e mlir::parseSourceFileForTool(std::shared_ptr<llvm::SourceMgr> const&, mlir::ParserConfig const&, bool) (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x41c3e8e)
#20 0x000055e27958567f performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#21 0x000055e2795853ed 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
#22 0x000055e279630275 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-project/install/bin/mlir-opt+0x426e275)
#23 0x000055e27957f405 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x41bd405)
#24 0x000055e27957f6af mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x41bd6af)
#25 0x000055e27957f9de mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x41bd9de)
#26 0x000055e27655e337 main (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x119c337)
#27 0x00007f00d4b57083 __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:342:3
#28 0x000055e27655de9e _start (/data/szy/MLIR/llvm-project/install/bin/mlir-opt+0x119be9e)
``` 
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzcWsty2zgW_Rp6g4oKBPhceCE7VnWq4k46zvRiNiqQuKQxAQEOADrWfP0UQNqiZMl23OpOz1Q5DkncxzkHFw8SZtaKVgGcR-lFlL4_Y4O71eb8-_dNFpfxWaX55rwVDt2BsUKriC5RWjacFHnR1JDkuMEEp0WTUJ5URVwAz4oacILLJMLLCC_txjrovF-U4X9Ug3IDiosFThYZ-vj1JsrwaGegN5oPNaDvwt1O9p0U5p3uHUJs4a8frSO8nJ7QJUL-QYbHH3_TaT5IQFF-EeElsr0wd4tmUDWKEtxoHZEiIikzLfbeIo7IJRofkPCARKREESG_agURIQ9xEJpC-bwLCxJqJ7SaNT8YXBim6ttLrbjwFkyih3w-U3pVVfHjFZl8p5tAh6wiskK9AR508C14L0XA0IFpYe4fP-u_FeMZBm_m8GoCRym8isTLMfL3D5I8Xo3GX8ANRgWsoWX6_fgzLyHrWP0NOcNqiOghg4fSDODIijPHIrKy_9lEZHX98cOXiKykvOve9Ub_C2oXkVUoV7KSoorIKhhcSF1_W9R9H9ElSXIf6lMPho2dQpZTgUd0GSzHyxbcVzCdUMxpE0q59I5La8GMjhnuRHvrfmF38MSS5KhhQgJfRHj5-ePV8uYK2aHqhEMMVUOLDPTaOOQ0unWutz5n6IlWuNuhWtS6m5g9JSisHcD6XmOKI6FqOXBA7hZQbZi9RRWrvwVFfe6bIDAfun7UFy_G7vtsdGtYh5hphw6Us68XWCjrmJQRWVVCTYKH2eOIuwXg0380IivX9Yv0t7b_-unqDrJxdvG1QihG-B5jjNMUSJ6lecOrAgUNQo_YjR0vPhuhXCD2NRQOKbZGhn1fa-sMsC4imR86Qrlxoin-GL2IXOD7OK44r0IXj5jjPcy8qOAQ5i-DuhGtYvIXprgEY8dCOR2sqqhgC4vswipwTjO0AyAiRVDmElnRCtXotYvI0t_facHDZTl52Gns4PBvTECnBHmDMU9TWiYEo_XagHXawNq4idk4DO-LbJ0l76RQw_27Vg1jQ-9uDTC-sHqBRxpJQvCWRDLPkVR5hnGFDBMWfKlVg5C-rlopqvrdx_oDwfePt2RBYy9owB-R1WLh7zaWQ-9HzqDE_fjgLkBRg78NoRd1RJepnxzjCUa6CyNNi7RErNKB4-tgOD7qELxChsJnyKcM2X6GnJSoBbceEa8ttH6Mru-YHF7NXSjnmUvNeGfbmo15U-ynsWJKnB9KvFZy7b3WXHdMqD-Wr8x91dBkSljsJsyyhmevqJTa10gWaoTShmfbGinnhV5mGUuzBr12Qj_R6EsIK9KsGUH5OWFnIitYBjyDGaiwTI6X135N_dSPN3dgRLM5KTSasZpnsIW2M18VRUnLmM2geSiXzyIllzvmXw0Tbrz5Jxj9BVqhlX3Ryg7SvWR1M9Q1WKvNS4ZhMVf8ObNP_Qd1x4xgaj_tbOslNzc91INkjlUSxuYxxvHAS_mdbezc70PXywNe19Bps7lqGqidR-PANNOu5-UsH-y8dOdmHBwTcrLaBj3ch78NYDbXQv0-vmVs7fcyT3ujaT04GGqe91jYQOBJr_wwOHr1jDLh8oLZYHZMyzeIxO7_FJGehn2LSAfA_QyRru4dqJNr9DTqGyQ6AO1nKHTJelYJKdzmpBIdCPsGjQ6Be5NID3fj-jWfaItjTE-2viU8LmO2Xd_I3vpGMMyXXr8-WQcG-COeX1k3zcLXmoN8af37uWQxhtliTnc2P3lS0aT2uZjSatPpwSLFOrB9KLtyD9rvnoAAM6fzqV8q_l77lUaFF6uDlPz2Cz24770beFjJPqyE4b8BrPTvCSvbg8VKnM0q9nFTeHzSqLSWJ9zN0qIocbatsnwOsM4gz5p0BrBnxsLSdjd6MDWshNx9IR8fX7cG1VpZN72U7-_Q92e_zz6oudSqEe0Rx6XtRqsbxxw8ifDYfKk5XOqul-DgUisH9-6kozKnJM2adKtXsdOhaZE1uNnXa0cs6_g03dwyA3zdOxPRywMSRvTq1Cp-1HUopaVz5qSyJHGdNHj2UlTuyZJCAcdlWWnzNZT1KdQ5qsOJR05cUyi28zPB-5SzvEE9mEabbhm-CdsXPl6dgLwnMq_7nTYpzKfeXTOhnqhTolnr03mLxPvkKPDZl6-PuhU1k-Or3ux5M6jAfG2g2aGy6zDv-EGJfw_whPv4RnUxNA2YHa04NGyQbs3Bj_njPn4pD_ud4z1QPq73NZOyYvW3daN2tggzkV7bl386ny2694JJqN247TGbp8XxXAGMJhFJ1jgELqRW7V_L5JmeeaE8ye6HIYpJnu5sr6VwS8U_G12DtQ9Yf0rR_Q8OiWct5m03zgjVfoHm6OPTfYXLgOTbdZjs7o7TvElwerj0_98G7snWs4oneKZosq9oxpqjik6nC_UtGzcWyx8tjJfkOCXNjG13KiTdp1lyOAnNv45PyWfbkGz3MCgFSnM0fdo_zelTWVOabxPuHyvkuKBovZaiqtfWMePWP3KwUNvh4QRnvAyNIU44YqAJ8b-n3MUeWQ4loDHr6ehWUD7o-3hYfcbPKS9pyc7gPM4TUmRJTOnZ7Xl4baJxVZQkiWOS5YRRljasBoZTWudn4pxgkmJKUg-b0kVcpGWJCc0pz2pMkyjB0DEhFx7mQpv2LJwBn8eUFCk-k6wCacOflhAyHn-TKH1_Zs4DrWpobZRgKayz2whOOBn-HCU4pO9_-GT7bDDy_O2H1xP2u3Py3wAAAP__W-PDrQ">