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

    <tr>
        <th>Summary</th>
        <td>
            llc -mtriple=wasm32-unknown-wasip1 -wasm-enable-sjlj crash
        </td>
    </tr>

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

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

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

<pre>
    
```
LLVM ERROR: Cannot select: 0x125818c70: ch = catchret 0x126605238, BasicBlock:ch<if.end.split 0x12681a700>, BasicBlock:ch<_llgo_0 0x1268133e0>
```

Both on macOS and Ubuntu 24.04, LLVM 20.1.2

Full stack trace:
```
/opt/homebrew/Cellar/llvm/20.1.2/bin/llc -filetype=obj -o /Users/lijie/Library/Caches/go-build/22/22f0a0faa15fa263adf87306cf3ca84e5080038c54c2937e1cc0a0a5b1f607dc-d.ll.o -mtriple=wasm32-unknown-wasip1 -relocation-model=pic -O2 -exception-model=wasm -wasm-enable-sjlj /Users/lijie/Library/Caches/go-build/22/22f0a0faa15fa263adf87306cf3ca84e5080038c54c2937e1cc0a0a5b1f607dc-d.ll
LLVM ERROR: Cannot select: 0x125818c70: ch = catchret 0x126605238, BasicBlock:ch<if.end.split 0x12681a700>, BasicBlock:ch<_llgo_0 0x1268133e0>
In function: github.com/goplus/llgo/_demo/defer.main
PLEASE submit a bug report to https://github.com/Homebrew/homebrew-core/issues and include the crash backtrace.
Stack dump:
0.      Program arguments: /opt/homebrew/Cellar/llvm/20.1.2/bin/llc -filetype=obj -o /Users/lijie/Library/Caches/go-build/3b/3bf96b08f75901240780bf41867077a136f15e8fb74b52ecaf364c6ed9b9398b-d.ll.o -mtriple=wasm32-unknown-wasip1 -relocation-model=pic -O2 -exception-model=wasm -wasm-enable-sjlj /Users/lijie/Library/Caches/go-build/3b/3bf96b08f75901240780bf41867077a136f15e8fb74b52ecaf364c6ed9b9398b-d.ll
1.      Running pass 'Function Pass Manager' on module '/Users/lijie/Library/Caches/go-build/3b/3bf96b08f75901240780bf41867077a136f15e8fb74b52ecaf364c6ed9b9398b-d.ll'.
2.      Running pass 'WebAssembly Instruction Selection' on function '@"github.com/goplus/llgo/_demo/defer.main"'
 #0 0x000000011139b954 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/homebrew/Cellar/llvm/20.1.2/lib/libLLVM.dylib+0x3d83954)
 #1 0x000000011139bd40 SignalHandler(int) (/opt/homebrew/Cellar/llvm/20.1.2/lib/libLLVM.dylib+0x3d83d40)
 #2 0x000000018e6dede4 (/usr/lib/system/libsystem_platform.dylib+0x180482de4)
 #3 0x000000018e6a7f70 (/usr/lib/system/libsystem_pthread.dylib+0x18044bf70)
 #4 0x000000018e5b4908 (/usr/lib/system/libsystem_c.dylib+0x180358908)
 #5 0x0000000111379838 llvm::report_fatal_error(llvm::StringRef, bool) (/opt/homebrew/Cellar/llvm/20.1.2/lib/libLLVM.dylib+0x3d61838)
 #6 0x000000011151438c llvm::SelectionDAGISel::CannotYetSelect(llvm::SDNode*) (/opt/homebrew/Cellar/llvm/20.1.2/lib/libLLVM.dylib+0x3efc38c)
 #7 0x000000010e0220ac llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int) (/opt/homebrew/Cellar/llvm/20.1.2/lib/libLLVM.dylib+0xa0a0ac)
 #8 0x0000000110a9bc78 (anonymous namespace)::WebAssemblyDAGToDAGISel::Select(llvm::SDNode*) (/opt/homebrew/Cellar/llvm/20.1.2/lib/libLLVM.dylib+0x3483c78)
 #9 0x000000010e016e88 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/opt/homebrew/Cellar/llvm/20.1.2/lib/libLLVM.dylib+0x9fee88)
#10 0x000000010e014300 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/opt/homebrew/Cellar/llvm/20.1.2/lib/libLLVM.dylib+0x9fc300)
#11 0x000000010e01255c llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/opt/homebrew/Cellar/llvm/20.1.2/lib/libLLVM.dylib+0x9fa55c)
#12 0x000000010e010e10 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) (/opt/homebrew/Cellar/llvm/20.1.2/lib/libLLVM.dylib+0x9f8e10)
#13 0x000000010db7de88 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/opt/homebrew/Cellar/llvm/20.1.2/lib/libLLVM.dylib+0x565e88)
#14 0x000000010d8dfa24 llvm::FPPassManager::runOnFunction(llvm::Function&) (/opt/homebrew/Cellar/llvm/20.1.2/lib/libLLVM.dylib+0x2c7a24)
#15 0x000000010d8eb6c0 llvm::FPPassManager::runOnModule(llvm::Module&) (/opt/homebrew/Cellar/llvm/20.1.2/lib/libLLVM.dylib+0x2d36c0)
#16 0x000000010d8e1ce4 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/opt/homebrew/Cellar/llvm/20.1.2/lib/libLLVM.dylib+0x2c9ce4)
#17 0x000000010413eca8 main (/opt/homebrew/Cellar/llvm/20.1.2/bin/llc+0x100002ca8)
#18 0x000000018e328274
```

My input `.ll` file doesn't contains `catchret` instruction. When add `-debug-pass=Structure -print-after-all`, print a very long code that contains `catchret` instruction.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzUmF1v27jSxz8NfUPIoEi9UBe-cOK4WyB5GiS7z-JcBRQ5spVSpEBSTf3tDyg7tZQG2xTIbvcUhWKR1Og35H9GQwrv250BWKH8AuWbhRjC3rqV7AfTWrOorTqsEFmjgpz-k_X19f_f4Ku7u093iK3xpTDGBuxBgwyxgXxNac5TLksSb-UeI7bBUgS5dxDG7qIgOWUc0Ut8IXwrL7SVnxFbyz1il22zBKOWvtftaTRPRUkIYlevP_Cg9c4-kOexjME4dg6NyPrChj22BndCfrrHwij8Rz2YMGCaLUkWbY-eUbJMl_T4yHbQGvsg5GccnJCA2PqlXbq1fUB0u7cd1A6eEN1egtbCIbrV-kuH6PZkkW7r1oytEidNqyEcekBsY-tHnFiM6PYPD87HEe1jC4hur9vaCXeIJoXcQ-za2aQeWq2iWTpeGiJII0SaN4IWTKiGl4wUsmFS8AxywglhXOaZpBUrIZWSCCLyOm0KUiqZqKXWS4uTLri215HnSfiO0WQwn419MsmT8G2f4sSBtlKE1pqkswo0Ypu-lTj5RHECXyX0s65oBMdnuwSMqDUk_lE__kon_5eU-9HgZjAyzmgk2bVhP9RLabtxcno9jBOodxbR7YOCLv5V0IBbdqI1iKxvr6_W91fYD3XXBixwPeywg966gIPF-xB6H7VMt9Hg1PpvZxk_KzqR1sWFar0fwI-B0xqpBwU47AFLJ_we10J-HkNkicj6fowYNXT9MWDIEpHq1tmdEx0Wbjd0YEIEwL8wfFg9XpqqqAlvyrwiKc1IyUndZCkvSlKWImVFk-bAm7rM6pyCFA0rMlmAquqKVbz-t4fP-zmJyDqNy3g3GNOaHe6F9xjRcnvSKb6NDTfCiB04RMsx01o1aIijfiU4LaMm6Wvwf0K99h66Wh_wR-ODG46-3I85IUbf0ZHnYBxdyQii9GdDMuaxEpGoeBYDnhz_pWnKqrrKMzyKna0RW_uDP_64da0JYyz9Pn58KD8PcuLpwfrgQHSIFjG9tCYgWmFE-U8FlW7r4zUmx6U6jPcX5CtTnFV5hmh1ok5fUquM4Pt2Z4T-TRil46rzvwFCxfl-hqATCA6FAgXZ6W2Dd98s-YMP0B1vj78fei1CY103sZ5yknGqYOIkm9sXZVOSN9oPewdCvTCf1U05wc9m5vM6qwh_m3k5N8xyXhF-NpzPF6esOOMTSR1T_0MjgtAP4Jx1MzHdB9ea3R00UUe1tfp917BIOZuwFjPWPM0YlxPWb7G3WX_4eB-zYWw9fqz_A-HYPcff_J9VgOj6XbGhkYzLM3Y5wSZAKCXix9jH1kur4NJ2Xcwnr3Nf4sGMhbjCci8cltb48LLnnYNLxBpp4iCfrgsRVS3LUZzCWHPo7OCxER34fkxF1dGFSQLdrD_8bl9x_h9YqowzWU4UVs2XKi2A8x8rzCr4AGZt1FXXhs36w4j3fpRVA8BPkDGdkheQGSPkjXpaa30uJv1sgr99jk8KKt7XBckIObuQvnCB5vmPQ8IN5pO5EXLfGnimnbnwXd87-yDyXJ59oC98IJD-1TJcw07Iw7_EEw7pZDWm3y6i6lLNVf8CJpZrEzde5f-bwPMin0VCNgPnqhF0Wg9tbyPrc2X5a5CpLAXNzsj5HBnqQpI3IN-MBfFcI6em98VVrJATaRQvcFMJ0xnWE1FPwD92_Tlm_wFoWUmYzPHsg5ulDKTgOBbTP_3GbxvHY_kULVIpJgrks7qMUU7L7PsDpJsDbk0_BIwKEjcWBcFxH4qVBR93CiEm3SBa4-OI53ODOKw97y2W-M89GCyUioMSBfWwS_oxGDf346DBAU76WPsnogngEjG-K5YCYysW-Au4A9bW7LC04zZcvO3dC7ViqmKVWMAqLbOsZGmV54v9qsgqqqTMaEk5FLyCNC_rrCwEk6WQOSzaFSU0J1map3mW5_mSMNk0BUCqiJRp0aCMQCdavYyTv7RutxjPC1Ypy8uqWGhRg_bjKSOlBp7w2Bu3Rflm4VbxoaQedh5lRLc--LOZ0AYNq3HX_8NN9ncb5vFwYjE4vfqLM4-TXEaG3tnHsWg5HXcguj158GVF_xsAAP__BN1e_w">