From: George Karpenkov Date: Fri, 7 Sep 2018 00:43:37 +0000 (+0000) Subject: [analyzer] Executed lines: store file IDs, not hashes. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5bf7347d5cdcd207bd43c6ae268be9a868c8833d;p=clang [analyzer] Executed lines: store file IDs, not hashes. Raw FileIDs are needed for the PlistDiagnostics to produce stable filenames. Differential Revision: https://reviews.llvm.org/D51668 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@341619 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h b/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h index ad76a1630a..4a4af64eb4 100644 --- a/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h +++ b/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h @@ -759,7 +759,7 @@ public: }; /// File IDs mapped to sets of line numbers. -using FilesToLineNumsMap = std::map>; +using FilesToLineNumsMap = std::map>; /// PathDiagnostic - PathDiagnostic objects represent a single path-sensitive /// diagnostic. It represents an ordered-collection of PathDiagnosticPieces, diff --git a/lib/StaticAnalyzer/Core/BugReporter.cpp b/lib/StaticAnalyzer/Core/BugReporter.cpp index 4e0a0d5045..1c140a1651 100644 --- a/lib/StaticAnalyzer/Core/BugReporter.cpp +++ b/lib/StaticAnalyzer/Core/BugReporter.cpp @@ -1893,7 +1893,7 @@ static void updateExecutedLinesWithDiagnosticPieces( FileID FID = Loc.getFileID(); unsigned LineNo = Loc.getLineNumber(); assert(FID.isValid()); - ExecutedLines[FID.getHashValue()].insert(LineNo); + ExecutedLines[FID].insert(LineNo); } } @@ -3030,7 +3030,7 @@ static void populateExecutedLinesWithFunctionSignature( FileID FID = SM.getFileID(SM.getExpansionLoc(Start)); for (unsigned Line = StartLine; Line <= EndLine; Line++) - ExecutedLines->operator[](FID.getHashValue()).insert(Line); + ExecutedLines->operator[](FID).insert(Line); } static void populateExecutedLinesWithStmt( @@ -3042,7 +3042,7 @@ static void populateExecutedLinesWithStmt( SourceLocation ExpansionLoc = SM.getExpansionLoc(Loc); FileID FID = SM.getFileID(ExpansionLoc); unsigned LineNo = SM.getExpansionLineNumber(ExpansionLoc); - ExecutedLines->operator[](FID.getHashValue()).insert(LineNo); + ExecutedLines->operator[](FID).insert(LineNo); } /// \return all executed lines including function signatures on the path diff --git a/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp b/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp index 77ea2a00ef..7f7cf37a0f 100644 --- a/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp +++ b/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp @@ -346,7 +346,7 @@ static void serializeExecutedLines( if (I != ExecutedLines.begin()) os << ", "; - os << "\"" << I->first << "\": {"; + os << "\"" << I->first.getHashValue() << "\": {"; for (unsigned LineNo : I->second) { if (LineNo != *(I->second.begin())) os << ", ";