OSDN Git Service

[sancov] skip duplicated points
authorMike Aizatsky <aizatsky@chromium.org>
Wed, 21 Dec 2016 22:10:01 +0000 (22:10 +0000)
committerMike Aizatsky <aizatsky@chromium.org>
Wed, 21 Dec 2016 22:10:01 +0000 (22:10 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@290278 91177308-0d34-0410-b5e6-96231b3b80d8

tools/sancov/sancov.cc

index d7ce120..ff2039d 100644 (file)
@@ -408,6 +408,8 @@ static void operator<<(JSONWriter &W,
 
     for (const auto &P : PointsByFn) {
       std::string FunctionName = P.first;
+      std::set<std::string> WrittenIds;
+
       ByFn->key(FunctionName);
 
       // Output <point_id> : "<line>:<col>".
@@ -416,7 +418,10 @@ static void operator<<(JSONWriter &W,
         for (const auto &Loc : Point->Locs) {
           if (Loc.FileName != FileName || Loc.FunctionName != FunctionName)
             continue;
+          if (WrittenIds.find(Point->Id) != WrittenIds.end())
+            continue;
 
+          WrittenIds.insert(Point->Id);
           ById->key(Point->Id);
           W << (utostr(Loc.Line) + ":" + utostr(Loc.Column));
         }