public override string ToString() { StringBuilder sb = new StringBuilder(); sb.AppendLine("********************************************************************"); sb.AppendLine("FUNCTION ID: " + ID); sb.AppendLine("- Global ID: " + globalID); sb.AppendLine("- Called from: " + calledFrom); sb.AppendLine("- Basic blocks total: " + BasicBlocks.Count); sb.AppendLine(" - Dead basic blocks: " + BasicBlocks.Count(x => x.inFakeLane)); sb.AppendLine("- Local variables total: " + LocalVariables.Count(x => x.kind != Variable.Kind.Global)); sb.AppendLine(" - Original input parameters: " + LocalVariables.Count(x => x.kind == Variable.Kind.Input && !x.fake)); sb.AppendLine(" - Original output parameters: " + LocalVariables.Count(x => x.kind == Variable.Kind.Output && !x.fake)); sb.AppendLine(" - Original variables: " + LocalVariables.Count(x => x.kind == Variable.Kind.Local && !x.fake)); sb.AppendLine(" - Fake input parameters: " + LocalVariables.Count(x => x.kind == Variable.Kind.Input && x.fake)); sb.AppendLine(" - Fake output parameters: " + LocalVariables.Count(x => x.kind == Variable.Kind.Output && x.fake)); sb.AppendLine(" - Fake variables: " + LocalVariables.Count(x => x.kind == Variable.Kind.Local && x.fake)); sb.AppendLine("********************************************************************"); sb.AppendLine("BASIC BLOCKS:"); foreach (BasicBlock bb in BasicBlocks) { sb.AppendLine(bb.ToString()); } return(sb.ToString()); }