protected override void RunTest(Program program, TextWriter writer) { var eventListener = new FakeDecompilerEventListener(); var sc = new ServiceContainer(); sc.AddService <DecompilerEventListener>(eventListener); var dfa = new DataFlowAnalysis( program, dynamicLinker.Object, sc); program.User.Procedures = userSigs; var usb = new UserSignatureBuilder(program); usb.BuildSignatures(eventListener); IntraBlockDeadRegisters.Apply(program, eventListener); var ssts = dfa.RewriteProceduresToSsa(); // Discover ssaId's that are live out at each call site. // Delete all others. var uvr = new UnusedOutValuesRemover( program, ssts.Select(sst => sst.SsaState), dfa.ProgramDataFlow, dynamicLinker.Object, eventListener); uvr.Transform(); DumpProcedureFlows(program, dfa, writer); }
private void RunTest(Action<ProcedureBuilder> m) { var builder = new ProcedureBuilder(); m(builder); var ibdr = new IntraBlockDeadRegisters(); var block = builder.Procedure.EntryBlock.Succ[0]; ibdr.Apply(block); var sw = new StringWriter(); block.WriteStatements(sw); sw.Flush(); testResult = sw.ToString(); }
private void RunTest(Action <ProcedureBuilder> m) { var builder = new ProcedureBuilder(); m(builder); var ibdr = new IntraBlockDeadRegisters(); var block = builder.Procedure.EntryBlock.Succ[0]; ibdr.Apply(block); var sw = new StringWriter(); block.WriteStatements(sw); sw.Flush(); testResult = sw.ToString(); }