[llvm-dev] Why MachineBasicBlcok doesn't have transferPredecessors() ?

Nicolai Hähnle via llvm-dev llvm-dev at lists.llvm.org
Fri Mar 13 08:56:59 PDT 2020


On Fri, Mar 13, 2020 at 12:22 PM PenYiWang via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
> I found that there is transferSuccessors() in MachineBasicBlcok
>
> So that when manipulating MachineBasicBlock,
> we can use transferSuccessors to update the CFG easily.
>
> Why there is not transferPredecessors in  MachineBasicBlcok ?

What would you want to use it for? If it's for splitting a block: the
common pattern for splitting seems to be to create a new block that
will be the successor of the old one rather than the other way around.
One good reason for this is that doing it this way only requires
fixing up (target-independent) phi instructions, while doing it the
other way around would require fixing up the (target-specific!) branch
instructions.

Cheers,
Nicolai


-- 
Lerne, wie die Welt wirklich ist,
aber vergiss niemals, wie sie sein sollte.


More information about the llvm-dev mailing list