[llvm-dev] Collectively dominance

Daniel Berlin via llvm-dev llvm-dev at lists.llvm.org
Tue Apr 25 18:32:36 PDT 2017


On Tue, Apr 25, 2017 at 6:17 PM, Hongbin Zheng <etherzhhb at gmail.com> wrote:

> Hi Daniel,
>
> I mean "*As a set*, B + C dominate D".
>
> On Tue, Apr 25, 2017 at 5:42 PM, Daniel Berlin <dberlin at dberlin.org>
> wrote:
>
>> When you say collectively, you mean "would dominate it if considered a
>> single block together?
>>
>> IE
>>
>>    A
>> /      \
>> B    C
>>   \  /
>>    D
>>
>> As a set, B + C dominate D.
>>
>> The set you are looking for there is (i believe):
>>
>> For each predecessor, walk the idom tree until you hit NCA of all
>> predecessors.
>>
> What do you mean by NCA?
>

Nearest common ancestor

If you have dfs numbers for the dom tree, you can do this very fast.


>
>
>
>> While you walk it, place all nodes on each branch in a set.
>>
>> Any set that collectively dominates D must contain at least one member
>> from each of these set, or be on the idom path between NCA and root.
>>
>> IE above, it would be that
>> Set 1 = {B}
>> Set 2 = {C}
>> Set IDOM to root = {A}.
>>
>> If you find something in "set IDOM to root", the answer is always "yes",
>> since that block alone dominates it, the collective set must dominate it.
>> (unless you use a stricter definition of collective)
>>
>> For the tree
>>   A
>>  /   \
>> B   D
>> |     |
>> C   E
>>  \   /
>>    F
>>
>> Set 1 = {B, C}
>> Set 2 = {D, E}
>> set IDOM to root = {A}
>>
>>
> Thanks a lot
> Hongbin
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170425/97207329/attachment-0001.html>


More information about the llvm-dev mailing list