From: Vedant Kumar Date: Thu, 8 Sep 2016 19:18:23 +0000 (+0000) Subject: [llvm-cov] Fix issues with segment highlighting in the html view X-Git-Tag: llvmorg-4.0.0-rc1~10290 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0b33f2c0032088e890f929f11ba559091182a8f9;p=platform%2Fupstream%2Fllvm.git [llvm-cov] Fix issues with segment highlighting in the html view The text and html coverage views take different approaches to emitting highlighted regions. That's because this problem is easier in the text view: there's no need to worry about escaping text or adding tooltip content to a highlighted snippet. Unfortunately, the html view didn't get region highlighting quite right. This patch fixes the situation, bringing parity between the two views. llvm-svn: 280981 --- diff --git a/llvm/test/tools/llvm-cov/showHighlightedRanges.cpp b/llvm/test/tools/llvm-cov/showHighlightedRanges.cpp index c53a6c9..4ed3f17 100644 --- a/llvm/test/tools/llvm-cov/showHighlightedRanges.cpp +++ b/llvm/test/tools/llvm-cov/showHighlightedRanges.cpp @@ -1,38 +1,38 @@ // RUN: llvm-cov show %S/Inputs/highlightedRanges.covmapping -instr-profile %S/Inputs/highlightedRanges.profdata -dump -filename-equivalence %s 2>&1 | FileCheck %s -check-prefixes=TEXT,SHARED void func() { - return; // TEXT: Highlighted line [[@LINE+1]], 3 -> ? - int i = 0; // HTML: Highlighted line [[@LINE]], 1 -> + return; + int i = 0; // SHARED: Highlighted line [[@LINE]], 3 -> } // SHARED: Highlighted line [[@LINE]], 1 -> 2 void func2(int x) { if(x > 5) { while(x >= 9) { return; - --x; // TEXT: Highlighted line [[@LINE]], 7 -> ? + --x; // SHARED: Highlighted line [[@LINE]], 7 -> } // SHARED: Highlighted line [[@LINE]], 1 -> 6 - int i = 0; // TEXT: Highlighted line [[@LINE]], 5 -> ? + int i = 0; // SHARED: Highlighted line [[@LINE]], 5 -> } // SHARED: Highlighted line [[@LINE]], 1 -> 4 } void test() { int x = 0; - if (x) { // TEXT: Highlighted line [[@LINE]], 10 -> ? - x = 0; // SHARED: Highlighted line [[@LINE]], 1 -> ? - } else { // TEXT: Highlighted line [[@LINE]], 1 -> 4 + if (x) { // SHARED: Highlighted line [[@LINE]], 10 -> + x = 0; // SHARED: Highlighted line [[@LINE]], 1 -> + } else { // SHARED: Highlighted line [[@LINE]], 1 -> 4 x = 1; } - // TEXT: Highlighted line [[@LINE+1]], 26 -> 29 - for (int i = 0; i < 0; ++i) { // TEXT: Highlighted line [[@LINE]], 31 -> ? - x = 1; // TEXT: Highlighted line [[@LINE]], 1 -> ? + // SHARED: Highlighted line [[@LINE+1]], 26 -> + for (int i = 0; i < 0; ++i) { // SHARED: Highlighted line [[@LINE]], 31 -> + x = 1; // SHARED: Highlighted line [[@LINE]], 1 -> } // SHARED: Highlighted line [[@LINE]], 1 -> 4 x = x < 10 ? x + 1 - : x - 1; // TEXT: Highlighted line [[@LINE]], 16 -> 21 - x = x > 10 ? x + // TEXT: Highlighted line [[@LINE]], 16 -> ? + : x - 1; // SHARED: Highlighted line [[@LINE]], 16 -> 21 + x = x > 10 ? x + // SHARED: Highlighted line [[@LINE]], 16 -> 1 // SHARED: Highlighted line [[@LINE]], 1 -> 17 : x - 1; } diff --git a/llvm/test/tools/llvm-cov/showLineExecutionCounts.cpp b/llvm/test/tools/llvm-cov/showLineExecutionCounts.cpp index 9637af4..f544832 100644 --- a/llvm/test/tools/llvm-cov/showLineExecutionCounts.cpp +++ b/llvm/test/tools/llvm-cov/showLineExecutionCounts.cpp @@ -50,7 +50,7 @@ int main() { // TEXT: [[@LINE]]| 161|int main( // HTML:
[[@LINE-44]]
161
int main() {
 // HTML: 
[[@LINE-44]]
161
  int x = 0
 // HTML: 
[[@LINE-44]]
161
-// HTML: 
[[@LINE-44]]
0
  if (x) {
+// HTML: 
[[@LINE-44]]
0
  if (x) {
 // HTML: 
[[@LINE-44]]
0
 // HTML: 
[[@LINE-44]]
161
  }
 // HTML: 
[[@LINE-44]]
161
    x = 1;
@@ -62,7 +62,7 @@ int main() {                              // TEXT: [[@LINE]]|   161|int main(
 // HTML: 
[[@LINE-44]]
161
 // HTML: 
[[@LINE-44]]
161
  x = x < 10
 // HTML: 
[[@LINE-44]]
161
  x = x > 10
-// HTML: 
[[@LINE-44]]
0
        x - 1:
+// HTML: 
[[@LINE-44]]
0
        x - 1:
 // HTML: 
[[@LINE-44]]
161
        x + 1;
 // HTML: 
[[@LINE-44]]
161
 // HTML: 
[[@LINE-44]]
161
  return 0;
diff --git a/llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp b/llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp
index ca3f350..17353b5 100644
--- a/llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp
+++ b/llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp
@@ -415,26 +415,21 @@ void SourceCoverageViewHTML::renderLine(
   //    snippet 3, and so on.
 
   Optional Color;
-  SmallVector, 4> HighlightedRanges;
+  SmallVector, 2> HighlightedRanges;
   auto Highlight = [&](const std::string &Snippet, unsigned LC, unsigned RC) {
-    if (getOptions().Debug) {
-      if (!HighlightedRanges.empty() &&
-          HighlightedRanges.back().second == LC - 1) {
-        HighlightedRanges.back().second = RC;
-      } else
-        HighlightedRanges.emplace_back(LC, RC);
-    }
+    if (getOptions().Debug)
+      HighlightedRanges.emplace_back(LC, RC);
     return tag("span", Snippet, Color.getValue());
   };
 
   auto CheckIfUncovered = [](const coverage::CoverageSegment *S) {
-    return S && (S->HasCount && S->Count == 0);
+    return S && S->HasCount && S->Count == 0;
   };
 
-  if (CheckIfUncovered(WrappedSegment) ||
-      CheckIfUncovered(Segments.empty() ? nullptr : Segments.front())) {
+  if (CheckIfUncovered(WrappedSegment)) {
     Color = "red";
-    Snippets[0] = Highlight(Snippets[0], 0, Snippets[0].size());
+    if (!Snippets[0].empty())
+      Snippets[0] = Highlight(Snippets[0], 1, 1 + Snippets[0].size());
   }
 
   for (unsigned I = 0, E = Segments.size(); I < E; ++I) {
@@ -452,16 +447,15 @@ void SourceCoverageViewHTML::renderLine(
   }
 
   if (Color.hasValue() && Segments.empty())
-    Snippets.back() = Highlight(Snippets.back(), Snippets[0].size(), 0);
+    Snippets.back() = Highlight(Snippets.back(), 1, 1 + Snippets.back().size());
 
   if (getOptions().Debug) {
     for (const auto &Range : HighlightedRanges) {
-      errs() << "Highlighted line " << LineNo << ", " << Range.first + 1
-             << " -> ";
+      errs() << "Highlighted line " << LineNo << ", " << Range.first << " -> ";
       if (Range.second == 0)
         errs() << "?";
       else
-        errs() << Range.second + 1;
+        errs() << Range.second;
       errs() << "\n";
     }
   }