-// 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]]|
// 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
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) {
if (!WholeFile) {
if (NextSegment == EndSegment)
break;
- else if (LI.line_number() < NextSegment->Line)
+ else if (LI.line_number() < FirstLine)
continue;
}