<div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><div><span style="font-size: 18px; ">Hi,</span></div><div><span style="font-size: 18px; ">    Now, MachineBlockPlacement Pass is inserted after Control Flow Optimizer(CFO).</span></div><div>    <span style="font-size: 18px; ">As I known, CFO will eliminates a lot of unconditional branch instructions. So, in the MachineBlockPlacement pass, </span></div><div><span style="font-size: 18px; ">AnalyzeBranch which is target-dependence is used to analyse FBB and TBB of a conditional branch instruction.</span></div><div><span style="font-size: 18px; ">For example, a machine block written as:</span></div><div><span style="font-size: 18px; ">BB#0:</span></div><div><span style="font-size: 18px; ">            ......</span></div><div><span style="font-size: 18px; ">            brcond  <BB#2></span></div><div><span style="font-size: 18px; ">           Successors according to CFG: BB#2(12)  BB#1 (20)</span></div><div><span style="font-size: 18px; ">BB#1:</span></div><div><span style="font-size: 18px; ">            ......</span></div><div><span style="font-size: 18px; ">            Successors according to CFG: BB#2</span></div><div><span style="font-size: 18px; ">BB#2:</span></div><div><span style="font-size: 18px; ">            ret</span></div><div>    <span style="font-size: 18px; ">In this case, FBB would be set NULL, and TBB is BB#2. Then, MachineBlockPlacement cannot handle this case.</span></div><div><span style="font-size: 18px; ">If MachineBlockPlacement is inserted before Control Flow Optimizer, it can handle more cases. But I'm not sure about this is the best way.</span></div><div>    <span style="font-size: 18px; ">Any suggestion will be appreciate.</span></div><div>    <span style="font-size: 18px; ">Thank you in advance.</span></div><div><span style="font-size: 18px; ">-Haishan</span></div></div>