From: Ted Kremenek Date: Fri, 27 Mar 2009 15:53:20 +0000 (+0000) Subject: analyzer plist: For PathDiagnosticControlFlowPieces, now output an array of X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f48fbc6cb1a7fa972d89f2e0adf5c4b5495160e3;p=clang analyzer plist: For PathDiagnosticControlFlowPieces, now output an array of start-end points, where start and end are source ranges. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67847 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Frontend/PlistDiagnostics.cpp b/lib/Frontend/PlistDiagnostics.cpp index 9087a94232..ba3c1f1605 100644 --- a/lib/Frontend/PlistDiagnostics.cpp +++ b/lib/Frontend/PlistDiagnostics.cpp @@ -108,12 +108,33 @@ static void ReportControlFlow(llvm::raw_ostream& o, Indent(o, indent) << "kindcontrol\n"; + // FIXME: Eventually remove (DEPRECATED) // Output the start and end locations. Indent(o, indent) << "start\n"; EmitLocation(o, SM, P.getStartLocation(), FM, indent); Indent(o, indent) << "end\n"; EmitLocation(o, SM, P.getEndLocation(), FM, indent); + // Emit edges. + Indent(o, indent) << "edges\n"; + ++indent; + Indent(o, indent) << "\n"; + ++indent; + for (PathDiagnosticControlFlowPiece::const_iterator I=P.begin(), E=P.end(); + I!=E; ++I) { + Indent(o, indent) << "\n"; + ++indent; + Indent(o, indent) << "start\n"; + EmitRange(o, SM, I->getStart().asRange(), FM, indent+1); + Indent(o, indent) << "end\n"; + EmitRange(o, SM, I->getEnd().asRange(), FM, indent+1); + --indent; + Indent(o, indent) << "\n"; + } + --indent; + Indent(o, indent) << "\n"; + --indent; + // Output any helper text. const std::string& s = P.getString(); if (!s.empty()) {