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); }
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()]); }
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; }