summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2009-03-27 15:53:20 +0000
committerTed Kremenek <kremenek@apple.com>2009-03-27 15:53:20 +0000
commit15b3753858653cd0606c05dbfbecb925a519d6dd (patch)
treebf694d6e134084ae79c68ef7abae64b60afda9d2 /clang/lib
parent227815437a1b612aa33ddef1e78493e1d34e0181 (diff)
downloadbcm5719-llvm-15b3753858653cd0606c05dbfbecb925a519d6dd.tar.gz
bcm5719-llvm-15b3753858653cd0606c05dbfbecb925a519d6dd.zip
analyzer plist: For PathDiagnosticControlFlowPieces, now output an array of
start-end points, where start and end are source ranges. llvm-svn: 67847
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Frontend/PlistDiagnostics.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/clang/lib/Frontend/PlistDiagnostics.cpp b/clang/lib/Frontend/PlistDiagnostics.cpp
index 9087a942322..ba3c1f16055 100644
--- a/clang/lib/Frontend/PlistDiagnostics.cpp
+++ b/clang/lib/Frontend/PlistDiagnostics.cpp
@@ -108,12 +108,33 @@ static void ReportControlFlow(llvm::raw_ostream& o,
Indent(o, indent) << "<key>kind</key><string>control</string>\n";
+ // FIXME: Eventually remove (DEPRECATED)
// Output the start and end locations.
Indent(o, indent) << "<key>start</key>\n";
EmitLocation(o, SM, P.getStartLocation(), FM, indent);
Indent(o, indent) << "<key>end</key>\n";
EmitLocation(o, SM, P.getEndLocation(), FM, indent);
+ // Emit edges.
+ Indent(o, indent) << "<key>edges</key>\n";
+ ++indent;
+ Indent(o, indent) << "<array>\n";
+ ++indent;
+ for (PathDiagnosticControlFlowPiece::const_iterator I=P.begin(), E=P.end();
+ I!=E; ++I) {
+ Indent(o, indent) << "<dict>\n";
+ ++indent;
+ Indent(o, indent) << "<key>start</key>\n";
+ EmitRange(o, SM, I->getStart().asRange(), FM, indent+1);
+ Indent(o, indent) << "<key>end</key>\n";
+ EmitRange(o, SM, I->getEnd().asRange(), FM, indent+1);
+ --indent;
+ Indent(o, indent) << "</dict>\n";
+ }
+ --indent;
+ Indent(o, indent) << "</array>\n";
+ --indent;
+
// Output any helper text.
const std::string& s = P.getString();
if (!s.empty()) {
OpenPOWER on IntegriCloud