diff options
author | Ted Kremenek <kremenek@apple.com> | 2009-03-27 15:53:20 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2009-03-27 15:53:20 +0000 |
commit | 15b3753858653cd0606c05dbfbecb925a519d6dd (patch) | |
tree | bf694d6e134084ae79c68ef7abae64b60afda9d2 /clang/lib | |
parent | 227815437a1b612aa33ddef1e78493e1d34e0181 (diff) | |
download | bcm5719-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.cpp | 21 |
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()) { |