public void SsaConstructionTest() { var root = Parser.ParseString(Samples.SampleProgramText.ssaoptimizationSample2); var code = ProgramTreeToLinear.Build(root); var blocks = LinearToBaseBlock.Build(code); var cfg = new CFGraph(blocks); Console.WriteLine("###--------- Input CF Graph ---------###"); Console.WriteLine(cfg.ToString()); SsaConstruction ssa = new SsaConstruction(cfg); Console.WriteLine("###--------- Output SSA Graph ---------###"); Console.WriteLine(ssa.SsaForm.ToString()); }
public void SsaCopyPropagationTest() { var root = Parser.ParseString(Samples.SampleProgramText.ssaoptimizationSample3); var code = ProgramTreeToLinear.Build(root); var blocks = LinearToBaseBlock.Build(code); var cfg = new CFGraph(blocks); Console.WriteLine("###--------- Input CF Graph ---------###"); Console.WriteLine(cfg.ToString()); SsaConstruction ssa = new SsaConstruction(cfg); CFGraph ssaGraph = ssa.SsaForm; Console.WriteLine("###--------- Constructed SSA Graph ---------###"); Console.WriteLine(ssaGraph.ToString()); SsaCopyPropagation ssaCopyPropagation = new SsaCopyPropagation(ssaGraph); ssaCopyPropagation.Launch(); Console.WriteLine("###--------- Output SSA Graph after copy propagation ---------###"); Console.WriteLine(ssaCopyPropagation.OptimizedSsaGraph); }