[llvm-dev] Update control flow graph when splitting a machine basic block?

Friedman, Eli via llvm-dev llvm-dev at lists.llvm.org
Fri Nov 10 11:02:50 PST 2017

On 11/10/2017 4:33 AM, 章明 via llvm-dev wrote:
> Hi, there!
> There are situations where a machine basic block has to be split into 
> two machine basic blocks, e.g., to place a constant pool entry or to 
> fix a conditional branch so that its target is within its range 
> (https://reviews.llvm.org/D38918).

The right way to update the CFG very much depends on how you're 
transforming it.

> However, it doesn't appear to be straightforward how the control flow 
> graph should be updated when a machine basic block is split, 
> especially when the split point is between two branches.In this case, 
> in order to determine the successors of each of the two machine basic 
> block, one needs to know the target of each terminator. If we ignore 
> indirect branches whose targets are not known at compile-time, I 
> wonder whether something like the following is viable or not:

Your pseudo-code looks similar to ARMBaseInstrInfo::analyzeBranch.


Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project

More information about the llvm-dev mailing list