public GlobalCallRewriter(Program prog, ProgramDataFlow mpprocflow) : base(prog) { this.mpprocflow = mpprocflow; }
public static void Rewrite(Program prog, ProgramDataFlow summaries) { GlobalCallRewriter crw = new GlobalCallRewriter(prog, summaries); foreach (Procedure proc in prog.Procedures.Values) { ProcedureFlow flow = (ProcedureFlow) crw.mpprocflow[proc]; flow.Dump(prog.Architecture); crw.AdjustLiveOut(flow); crw.EnsureSignature(proc, flow); crw.AddUseInstructionsForOutArguments(proc); } foreach (Procedure proc in prog.Procedures.Values) { crw.RewriteCalls(proc, prog.Architecture); crw.RewriteReturns(proc); } }