Exemplo n.º 1
0
    private static DominatorTreeNode BuildExpectedDominatorTree()
    {
        // this is silly replication but hey it makes life easy
        IRBlock block1 = new IRBlock(1);
        IRBlock block2 = new IRBlock(2);
        IRBlock block3 = new IRBlock(3);
        IRBlock block4 = new IRBlock(4);
        IRBlock block5 = new IRBlock(5);
        IRBlock block6 = new IRBlock(6);
        IRBlock block7 = new IRBlock(7);
        IRBlock block8 = new IRBlock(8);
        IRBlock block9 = new IRBlock(9);

        DominatorTreeNode node1 = new DominatorTreeNode(block1);
        DominatorTreeNode node2 = new DominatorTreeNode(block2);
        DominatorTreeNode node3 = new DominatorTreeNode(block3);
        DominatorTreeNode node4 = new DominatorTreeNode(block4);
        DominatorTreeNode node5 = new DominatorTreeNode(block5);
        DominatorTreeNode node6 = new DominatorTreeNode(block6);
        DominatorTreeNode node7 = new DominatorTreeNode(block7);
        DominatorTreeNode node8 = new DominatorTreeNode(block8);
        DominatorTreeNode node9 = new DominatorTreeNode(block9);

        node1.AddDescendant(node2);
        node2.AddDescendant(node3);
        node3.AddDescendant(node4);
        node3.AddDescendant(node5);
        node4.AddDescendant(node6);
        node4.AddDescendant(node7);
        node4.AddDescendant(node9);
        node5.AddDescendant(node8);
        // node4.AddDescendant(node8);

        return(node1);
    }
Exemplo n.º 2
0
    private DominatorTreeNode BuildTreeFromImediateDominators()
    {
        // create nodes
        foreach (IRBlock block in this.cfg.GetSetOfAllBlocks())
        {
            this.blockToNodeMappings[block] = new DominatorTreeNode(block);
        }

        // link nodes
        foreach (KeyValuePair <IRBlock, IRBlock> pair in this.imediateDominator)
        {
            DominatorTreeNode ancestor   = this.blockToNodeMappings[pair.Value];
            DominatorTreeNode descendant = this.blockToNodeMappings[pair.Key];

            ancestor.AddDescendant(descendant);
        }

        return(this.blockToNodeMappings[this.cfg.GetGraphHead()]);
    }
Exemplo n.º 3
0
    private static DominatorTreeNode BuildExpectedDominatorTree()
    {
        // this is silly replication but hey it makes life easy
        IRBlock block1 = new IRBlock(1);
        IRBlock block2 = new IRBlock(2);
        IRBlock block3 = new IRBlock(3);
        IRBlock block4 = new IRBlock(4);
        IRBlock block5 = new IRBlock(5);
        IRBlock block6 = new IRBlock(6);
        IRBlock block7 = new IRBlock(7);
        IRBlock block8 = new IRBlock(8);
        IRBlock block9 = new IRBlock(9);

        DominatorTreeNode node1 = new DominatorTreeNode(block1);
        DominatorTreeNode node2 = new DominatorTreeNode(block2);
        DominatorTreeNode node3 = new DominatorTreeNode(block3);
        DominatorTreeNode node4 = new DominatorTreeNode(block4);
        DominatorTreeNode node5 = new DominatorTreeNode(block5);
        DominatorTreeNode node6 = new DominatorTreeNode(block6);
        DominatorTreeNode node7 = new DominatorTreeNode(block7);
        DominatorTreeNode node8 = new DominatorTreeNode(block8);
        DominatorTreeNode node9 = new DominatorTreeNode(block9);

        node1.AddDescendant(node2);
        node2.AddDescendant(node3);
        node3.AddDescendant(node4);
        node3.AddDescendant(node5);
        node4.AddDescendant(node6);
        node4.AddDescendant(node7);
        node4.AddDescendant(node9);
        node5.AddDescendant(node8);
        // node4.AddDescendant(node8);

        return node1;
    }