public void Setup() { arch = new FakeArchitecture(); proc = new Procedure("Test", new Frame(arch.FramePointerType)); flow = new ProcedureFlow(proc, arch); ctx = new SymbolicEvaluationContext(arch, proc.Frame); trs = new TrashedRegisterSummarizer(arch, proc, flow, ctx); }
public void PropagateToProcedureSummary(Procedure proc) { var prop = new TrashedRegisterSummarizer(program.Architecture, proc, flow[proc], ctx); bool changed = prop.PropagateToProcedureSummary(); if (changed) { foreach (Statement stm in program.CallGraph.CallerStatements(proc)) { if (visited.Contains(stm.Block)) { worklist.Add(stm.Block); } } } }