As I know, the compiler would generate indirect jump for continuous, large switch case code block, virtual function table for C++, and in some tail call situation. Also, indirect calls (not jump) for pointers to functions. Any other situations to use indirect jump?
Additionally, can we tell compiler (clang/llvm preferred) not to generate indirect calls unless necessary?
The question may be weird as I'm doing some research on this.