What instructions end a basic block?


I'd like to understand all the instructions that can end a basic block.

So far, after analyzing a .ll file converted from .bc, I found the
following 4 instructions. Are there other instructions that I miss?

- br
- ret
- switch
- unreachable

What you are looking for is the list of terminator instructions: https://llvm.org/docs/LangRef.html#terminator-instructions

This is ret, br, switch, indirectbr, unreachable, invoke, resume, catchswitch, catchret, and cleanupret. Note that every instruction from invoke on in that list is related to exception handling.