[PATCH] D21811: [MBB] add a missing corner case in UpdateTerminator()
Haicheng Wu via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 28 12:14:10 PDT 2016
haicheng created this revision.
haicheng added reviewers: majnemer, mcrosier, mssimpso, uabelho.
haicheng added a subscriber: llvm-commits.
haicheng set the repository for this revision to rL LLVM.
Herald added a subscriber: mcrosier.
If the layout after the block placement is like this
JGE_1 <BB#9>, %EFLAGS<imp-use>
Successors according to CFG: BB#9(0x80000000 / 0x80000000 = 100.00%)
where BB#8 ends with a conditional branch, but the next block is not its successor. The conditional branch should be changed to unconditional branch in MachineBasicBlock::UpdateTerminator(), but this case is missing.
In cases like above example, the results returned by AnalyzeBranch() are: TBB = branch target; FBB = nullptr; Cond = branch condition (not empty)
This corner cases happens if a block (e.g. BB#8) branches and fallthourghs into the same block (e.g. BB#9) before the block placement, and the block placement moves this successor (e.g. BB#9) somewhere else.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 3038 bytes
Desc: not available
More information about the llvm-commits