Question about MachineBlockPlacement Pass in LLVM

Now, MachineBlockPlacement Pass is inserted after Control Flow Optimizer(CFO).
As I known, CFO will eliminates a lot of unconditional branch instructions. So, in the MachineBlockPlacement pass,
AnalyzeBranch which is target-dependence is used to analyse FBB and TBB of a conditional branch instruction.
For example, a machine block written as:

brcond <BB#2>
Successors according to CFG: BB#2(12) BB#1 (20)

Successors according to CFG: BB#2
In this case, FBB would be set NULL, and TBB is BB#2. Then, MachineBlockPlacement cannot handle this case.
If MachineBlockPlacement is inserted before Control Flow Optimizer, it can handle more cases. But I’m not sure about this is the best way.
Any suggestion will be appreciate.
Thank you in advance.