public void Constructor_CompareNestedLoopWithCounter() { var tacContainer = Utils.GetNestedLoopWithCounterInTAC(); var cfg = new ControlFlowGraph(tacContainer); var genKillVisitor = new GenKillVisitor(); var itaOriginal = new ReachingDefinitionsITA(cfg.GetCFGWithSortedVertices(), genKillVisitor.GenerateReachingDefinitionForBlocks(cfg.SourceBasicBlocks)); var itaSorted = new ReachingDefinitionsITA(cfg, genKillVisitor.GenerateReachingDefinitionForBlocks(cfg.SourceBasicBlocks)); Assert.AreEqual(itaOriginal.ToString(), itaSorted.ToString()); }
public void Constructor_CompareIfWithNestedLoopAndNestedIf() { var tacContainer = new ThreeAddressCode(); // basic block #0 Utils.AddAssignmentNode(tacContainer, null, "t1", "a", "<", "5"); Utils.AddIfGotoNode(tacContainer, null, "L1", "t1"); // basic block #1 Utils.AddAssignmentNode(tacContainer, null, "t2", "a", ">", "10"); Utils.AddIfGotoNode(tacContainer, null, "L3", "t2"); // basic block #2 Utils.AddGotoNode(tacContainer, null, "L4"); // basic block #3 Utils.AddAssignmentNode(tacContainer, "L3", "t3", "a", "-", "10"); Utils.AddAssignmentNode(tacContainer, null, "a", "t3"); // basic block #4 Utils.AddGotoNode(tacContainer, "L4", "L2"); // basic block #5 Utils.AddAssignmentNode(tacContainer, "L1", "j", "1"); // basic block #6 Utils.AddAssignmentNode(tacContainer, "L5", "t4", "a", "+", "1"); Utils.AddAssignmentNode(tacContainer, null, "a", "t4"); Utils.AddAssignmentNode(tacContainer, null, "j", "j", "+", "1"); Utils.AddAssignmentNode(tacContainer, null, "t5", "j", "<", "10"); Utils.AddIfGotoNode(tacContainer, null, "L5", "t5"); // basic block #7 Utils.AddAssignmentNode(tacContainer, "L2", "p", "2"); var cfg = new ControlFlowGraph(tacContainer); var genKillVisitor = new GenKillVisitor(); var itaOriginal = new ReachingDefinitionsITA(cfg.GetCFGWithSortedVertices(), genKillVisitor.GenerateReachingDefinitionForBlocks(cfg.SourceBasicBlocks)); var itaSorted = new ReachingDefinitionsITA(cfg, genKillVisitor.GenerateReachingDefinitionForBlocks(cfg.SourceBasicBlocks)); Assert.AreEqual(itaOriginal.ToString(), itaSorted.ToString()); }