Entry and Shared Machine Basic Blocks of a Machine Function

Hi, LLVM developers!

I have heard that at the native assembly level, a function may have more than one entry points, and different function may share common basic blocks. What is the case for LLVM MachineFunction’s? In particular, I would like to ask the following questions:

  1. If the code of a MachineFunction may be entered at more than one point, does this mean that the MachineFunction itself has more than one entry (This sounds rather bizarre to me.), or that its code contains the entry of another MachineFunction?

  2. Given a MachineFunction, is it possible to identify its entry MachineBasicBlock('s)? Is the entry MachineBasicBlock always the first MachineBasicBlock of the MachineFunction?

  3. If LLVM allows more than one MachineFunction to share common MachineBasicBlock’s, is it possible for MachineFunction’s from different modules to share common MachineBasicBlock’s?

Thank you!

Ming Zhang