<div dir="ltr"><div>Hi Fellows,</div><div><br></div><div>      I am writing a pass that requires the DominatorTree pass. In the runOnFunction of my own pass, I call llvm::SplitBlock to split a block (%for.end) at it's first insert point. Then, when I dump my dominator tree immediately after, I can see the newly split %for.end.split, but its DFSNumIn and DFSNumOut are not properly updated in llvm::SplitBlock (i.e., still the initialized -1). At the same time, the DT->dump() results also show that DFSInfoValid equals false! I could not figure out what I did wrong, b/c it seems all the analysis updating should be handled by llvm::SplitBlock. <span style="color:rgb(68,68,68);font-family:arial,sans-serif;line-height:16.1200008392334px">Any suggestions on how to approach this</span><span style="color:rgb(68,68,68);font-family:arial,sans-serif;line-height:16.1200008392334px"> situation?</span> Thanks a bunch in advance.</div>
<div><br></div><div><br></div><div>-------------------------  The actual dump of my dominator tree after SplitBlock --------------------</div><div><br></div><div>Inorder Dominator Tree: DFSNumbers invalid: 1 slow queries.</div>
<div>  [1] %entry.barrier {0,27}</div><div>    [2] %entry {1,26}</div><div>      [3] %for.cond {2,25}</div><div>        [4] %for.body {3,6}</div><div>          [5] %for.inc {4,5}</div><div>        [4] %for.end {7,24}</div>
<div>          <b>[5] %for.end.split {4294967295,4294967295}</b></div><div>            [6] %if.then {8,15}</div><div>              [7] %if.then13 {9,10}</div><div>              [7] %if.end {11,12}</div><div>              [7] %if.then.if.end_crit_edge {13,14}</div>
<div>            [6] %if.end14 {16,21}</div><div>              [7] %exit.b4.barrier {17,20}</div><div>                [8] %exit.barrier {18,19}</div><div>            [6] %for.end.if.end14_crit_edge {22,23}</div><div><br></div>
</div>