]> granicus.if.org Git - clang/commitdiff
[analyzer] Executed lines: store file IDs, not hashes.
authorGeorge Karpenkov <ekarpenkov@apple.com>
Fri, 7 Sep 2018 00:43:37 +0000 (00:43 +0000)
committerGeorge Karpenkov <ekarpenkov@apple.com>
Fri, 7 Sep 2018 00:43:37 +0000 (00:43 +0000)
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

include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h
lib/StaticAnalyzer/Core/BugReporter.cpp
lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp

index ad76a1630ae8d75609c60dcac66e01eb12be27d7..4a4af64eb4857b67b639d6363bfc52475df0698b 100644 (file)
@@ -759,7 +759,7 @@ public:
 };
 
 /// File IDs mapped to sets of line numbers.
-using FilesToLineNumsMap = std::map<unsigned, std::set<unsigned>>;
+using FilesToLineNumsMap = std::map<FileID, std::set<unsigned>>;
 
 /// PathDiagnostic - PathDiagnostic objects represent a single path-sensitive
 ///  diagnostic.  It represents an ordered-collection of PathDiagnosticPieces,
index 4e0a0d5045e1171dcbf64caea34dec149a971a4b..1c140a1651cfb2e7f708080502a92f7a51de9c5c 100644 (file)
@@ -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
index 77ea2a00ef62207cee277dc757c44f7e0ed5e489..7f7cf37a0fe21f285c25af154a17238f30515273 100644 (file)
@@ -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 << ", ";