1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-18 18:42:46 +02:00

[llvm-cov] Simplify code to find the first uncovered segment. NFC.

Now that that segment builder is guaranteed to produce segments in
sorted order, we don't need a linear scan to get the right result.

llvm-svn: 313595
This commit is contained in:
Vedant Kumar 2017-09-18 23:37:27 +00:00
parent 8a95021a63
commit 901e6b85af

View File

@ -125,22 +125,16 @@ LineCoverageStats::LineCoverageStats(
} }
unsigned SourceCoverageView::getFirstUncoveredLineNo() { unsigned SourceCoverageView::getFirstUncoveredLineNo() {
auto CheckIfUncovered = [](const coverage::CoverageSegment &S) {
return S.HasCount && S.Count == 0;
};
// L is less than R if (1) it's an uncovered segment (has a 0 count), and (2)
// either R is not an uncovered segment, or L has a lower line number than R.
const auto MinSegIt = const auto MinSegIt =
std::min_element(CoverageInfo.begin(), CoverageInfo.end(), find_if(CoverageInfo, [](const coverage::CoverageSegment &S) {
[CheckIfUncovered](const coverage::CoverageSegment &L, return S.HasCount && S.Count == 0;
const coverage::CoverageSegment &R) { });
return (CheckIfUncovered(L) &&
(!CheckIfUncovered(R) || (L.Line < R.Line)));
});
if (CheckIfUncovered(*MinSegIt))
return (*MinSegIt).Line;
// There is no uncovered line, return zero. // There is no uncovered line, return zero.
return 0; if (MinSegIt == CoverageInfo.end())
return 0;
return (*MinSegIt).Line;
} }
std::string SourceCoverageView::formatCount(uint64_t N) { std::string SourceCoverageView::formatCount(uint64_t N) {