[LLVMdev] DominatorTree not updated properly after calling the llvm::SplitBlock.

Andrew Trick atrick at apple.com
Thu Feb 13 23:59:18 PST 2014


On Feb 13, 2014, at 4:34 PM, Paul Vario <paul.paul.mit at gmail.com> wrote:

> Hi Fellows,
> 
>       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. Any suggestions on how to approach this situation? Thanks a bunch in advance.

Hi Paul,

DFSNumbers is a cache within the DominatorTree analysis. It is lazily computed after a certain number of queries. It’s kind of hard to incrementally update these numbers because we may have to shift them all.

At any rate, invalid DFS numbers does not mean something is wrong with the analysis.

-Andy

> 
> 
> -------------------------  The actual dump of my dominator tree after SplitBlock --------------------
> 
> Inorder Dominator Tree: DFSNumbers invalid: 1 slow queries.
>   [1] %entry.barrier {0,27}
>     [2] %entry {1,26}
>       [3] %for.cond {2,25}
>         [4] %for.body {3,6}
>           [5] %for.inc {4,5}
>         [4] %for.end {7,24}
>           [5] %for.end.split {4294967295,4294967295}
>             [6] %if.then {8,15}
>               [7] %if.then13 {9,10}
>               [7] %if.end {11,12}
>               [7] %if.then.if.end_crit_edge {13,14}
>             [6] %if.end14 {16,21}
>               [7] %exit.b4.barrier {17,20}
>                 [8] %exit.barrier {18,19}
>             [6] %for.end.if.end14_crit_edge {22,23}
> 
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140213/d3fb6b0e/attachment.html>


More information about the llvm-dev mailing list