forked from OSchip/llvm-project
llvm-cov: Fix dropped lines when filters were applied
Uncovered lines in the middle of a covered region weren't being shown when filtering to a particular function. llvm-svn: 218109
This commit is contained in:
parent
116c16642d
commit
13ba23bb79
Binary file not shown.
|
@ -1,5 +1,8 @@
|
|||
// RUN: llvm-cov show %S/Inputs/lineExecutionCounts.covmapping -instr-profile %S/Inputs/lineExecutionCounts.profdata -no-colors -filename-equivalence %s | FileCheck %s
|
||||
// RUN: llvm-cov show %S/Inputs/lineExecutionCounts.covmapping -instr-profile %S/Inputs/lineExecutionCounts.profdata -no-colors -filename-equivalence %s | FileCheck -check-prefix=CHECK -check-prefix=WHOLE-FILE %s
|
||||
// RUN: llvm-cov show %S/Inputs/lineExecutionCounts.covmapping -instr-profile %S/Inputs/lineExecutionCounts.profdata -no-colors -filename-equivalence -name=main %s | FileCheck -check-prefix=CHECK -check-prefix=FILTER %s
|
||||
|
||||
// before any coverage // WHOLE-FILE: | [[@LINE]]|// before
|
||||
// FILTER-NOT: | [[@LINE-1]]|// before
|
||||
int main() { // CHECK: 1| [[@LINE]]|int main(
|
||||
int x = 0; // CHECK: 1| [[@LINE]]| int x
|
||||
// CHECK: 1| [[@LINE]]|
|
||||
|
@ -20,6 +23,8 @@ int main() { // CHECK: 1| [[@LINE]]|int main(
|
|||
// CHECK: 1| [[@LINE]]|
|
||||
return 0; // CHECK: 1| [[@LINE]]| return
|
||||
} // CHECK: 1| [[@LINE]]|}
|
||||
// after coverage // WHOLE-FILE: | [[@LINE]]|// after
|
||||
// FILTER-NOT: | [[@LINE-1]]|// after
|
||||
|
||||
// llvm-cov doesn't work on big endian yet
|
||||
// XFAIL: powerpc64-, s390x, mips-, mips64-, sparc
|
||||
|
|
|
@ -163,6 +163,7 @@ void SourceCoverageView::render(raw_ostream &OS, bool WholeFile,
|
|||
auto NextSegment = CoverageSegments.begin();
|
||||
auto EndSegment = CoverageSegments.end();
|
||||
|
||||
unsigned FirstLine = NextSegment != EndSegment ? NextSegment->Line : 0;
|
||||
const CoverageSegment *WrappedSegment = nullptr;
|
||||
SmallVector<const CoverageSegment *, 8> LineSegments;
|
||||
for (line_iterator LI(File, /*SkipBlanks=*/false); !LI.is_at_eof(); ++LI) {
|
||||
|
@ -171,7 +172,7 @@ void SourceCoverageView::render(raw_ostream &OS, bool WholeFile,
|
|||
if (!WholeFile) {
|
||||
if (NextSegment == EndSegment)
|
||||
break;
|
||||
else if (LI.line_number() < NextSegment->Line)
|
||||
else if (LI.line_number() < FirstLine)
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue