[llvm] r217835 - llvm-cov: Fix an issue with showing regions but not counts
Justin Bogner
mail at justinbogner.com
Mon Sep 15 15:12:29 PDT 2014
Author: bogner
Date: Mon Sep 15 17:12:28 2014
New Revision: 217835
URL: http://llvm.org/viewvc/llvm-project?rev=217835&view=rev
Log:
llvm-cov: Fix an issue with showing regions but not counts
In r217746, though it was supposed to be NFC, I broke llvm-cov's
handling of showing regions without showing counts. This should've
shown up in the existing tests, except they were checking debug output
that was displayed regardless of what was actually output. I've moved
the relevant debug output to a more appropriate place so that the
tests catch this kind of thing.
Modified:
llvm/trunk/test/tools/llvm-cov/showRegionMarkers.cpp
llvm/trunk/tools/llvm-cov/SourceCoverageView.cpp
llvm/trunk/tools/llvm-cov/SourceCoverageView.h
Modified: llvm/trunk/test/tools/llvm-cov/showRegionMarkers.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-cov/showRegionMarkers.cpp?rev=217835&r1=217834&r2=217835&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-cov/showRegionMarkers.cpp (original)
+++ llvm/trunk/test/tools/llvm-cov/showRegionMarkers.cpp Mon Sep 15 17:12:28 2014
@@ -1,4 +1,4 @@
-// RUN: llvm-cov show %S/Inputs/regionMarkers.covmapping -instr-profile %S/Inputs/regionMarkers.profdata -show-regions -dump -filename-equivalence %s | FileCheck %s
+// RUN: llvm-cov show %S/Inputs/regionMarkers.covmapping -instr-profile %S/Inputs/regionMarkers.profdata -show-regions -dump -filename-equivalence %s 2>&1 | FileCheck %s
int main() { // CHECK: Marker at [[@LINE]]:12 = 1
int x = 0;
Modified: llvm/trunk/tools/llvm-cov/SourceCoverageView.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-cov/SourceCoverageView.cpp?rev=217835&r1=217834&r2=217835&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-cov/SourceCoverageView.cpp (original)
+++ llvm/trunk/tools/llvm-cov/SourceCoverageView.cpp Mon Sep 15 17:12:28 2014
@@ -118,6 +118,13 @@ void SourceCoverageView::renderRegionMar
Buffer.clear();
}
OS << "\n";
+
+ if (Options.Debug) {
+ for (const auto &Region : Regions) {
+ errs() << "Marker at " << Region.Line << ":" << Region.Column << " = "
+ << Region.ExecutionCount << "\n";
+ }
+ }
}
/// \brief Insert a new highlighting range into the line's highlighting ranges
@@ -316,17 +323,24 @@ void SourceCoverageView::render(raw_ostr
}
}
-void
-SourceCoverageView::createLineCoverageInfo(SourceCoverageDataManager &Data) {
+void SourceCoverageView::setUpVisibleRange(SourceCoverageDataManager &Data) {
auto CountedRegions = Data.getSourceRegions();
if (!CountedRegions.size())
return;
- LineOffset = CountedRegions.front().LineStart;
- LineStats.resize(CountedRegions.front().LineEnd - LineOffset + 1);
+ unsigned Start = CountedRegions.front().LineStart, End = 0;
+ for (const auto &CR : CountedRegions) {
+ Start = std::min(Start, CR.LineStart);
+ End = std::max(End, CR.LineEnd);
+ }
+ LineOffset = Start;
+ LineStats.resize(End - Start + 1);
+}
+
+void
+SourceCoverageView::createLineCoverageInfo(SourceCoverageDataManager &Data) {
+ auto CountedRegions = Data.getSourceRegions();
for (const auto &CR : CountedRegions) {
- if (CR.LineEnd > LineStats.size())
- LineStats.resize(CR.LineEnd - LineOffset + 1);
if (CR.Kind == coverage::CounterMappingRegion::SkippedRegion) {
// Reset the line stats for skipped regions.
for (unsigned Line = CR.LineStart; Line <= CR.LineEnd;
@@ -395,16 +409,10 @@ void SourceCoverageView::createRegionMar
if (CR.Kind != coverage::CounterMappingRegion::SkippedRegion)
Markers.push_back(
RegionMarker(CR.LineStart, CR.ColumnStart, CR.ExecutionCount));
-
- if (Options.Debug) {
- for (const auto &Marker : Markers) {
- outs() << "Marker at " << Marker.Line << ":" << Marker.Column << " = "
- << Marker.ExecutionCount << "\n";
- }
- }
}
void SourceCoverageView::load(SourceCoverageDataManager &Data) {
+ setUpVisibleRange(Data);
if (Options.ShowLineStats)
createLineCoverageInfo(Data);
if (Options.Colors)
Modified: llvm/trunk/tools/llvm-cov/SourceCoverageView.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-cov/SourceCoverageView.h?rev=217835&r1=217834&r2=217835&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-cov/SourceCoverageView.h (original)
+++ llvm/trunk/tools/llvm-cov/SourceCoverageView.h Mon Sep 15 17:12:28 2014
@@ -119,6 +119,9 @@ private:
std::vector<RegionMarker> Markers;
StringRef FunctionName;
+ /// \brief Initialize the visible source range for this view.
+ void setUpVisibleRange(SourceCoverageDataManager &Data);
+
/// \brief Create the line coverage information using the coverage data.
void createLineCoverageInfo(SourceCoverageDataManager &Data);
More information about the llvm-commits
mailing list