public static void FormatControlFlowGraph (TextWriter writer, ControlFlowGraph cfg) { foreach (InstructionBlock block in cfg.Blocks) { writer.WriteLine ("block {0}:", block.Index); writer.WriteLine ("\tbody:"); foreach (Instruction instruction in block) { writer.Write ("\t\t"); var data = cfg.GetData (instruction); writer.Write ("[{0}:{1}] ", data.StackBefore, data.StackAfter); Formatter.WriteInstruction (writer, instruction); writer.WriteLine (); } InstructionBlock [] successors = block.Successors; if (successors.Length > 0) { writer.WriteLine ("\tsuccessors:"); foreach (InstructionBlock successor in successors) { writer.WriteLine ("\t\tblock {0}", successor.Index); } } } }