summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-cov/CoverageReport.cpp
diff options
context:
space:
mode:
authorVedant Kumar <vsk@apple.com>2016-09-26 17:57:13 +0000
committerVedant Kumar <vsk@apple.com>2016-09-26 17:57:13 +0000
commit5cd496ba3ab213f0c7258da40f06d6d111d5fd2d (patch)
tree769c5ac3a722354dee21c8f94aa753ea3e84a8bd /llvm/tools/llvm-cov/CoverageReport.cpp
parentf72ac492ccea2d11c3c0dd10bcdaadec7537f9ce (diff)
downloadbcm5719-llvm-5cd496ba3ab213f0c7258da40f06d6d111d5fd2d.tar.gz
bcm5719-llvm-5cd496ba3ab213f0c7258da40f06d6d111d5fd2d.zip
[llvm-cov] Silence a warning from the MSVC runtime (NFC)
Rework getLongestCommonPrefixLen() so that it doesn't access string null terminators. The old version with std::mismatch would do this: | v Strings[0] = ['a', nil] Strings[1] = ['a', 'a', nil] ^ | This should silence a warning from the MSVC runtime (PR30515). As before, I tested this out by preparing a coverage report for FileCheck. Thanks to Yaron Keren for the report! llvm-svn: 282422
Diffstat (limited to 'llvm/tools/llvm-cov/CoverageReport.cpp')
-rw-r--r--llvm/tools/llvm-cov/CoverageReport.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/llvm/tools/llvm-cov/CoverageReport.cpp b/llvm/tools/llvm-cov/CoverageReport.cpp
index 24d7c661aad..5a56579149a 100644
--- a/llvm/tools/llvm-cov/CoverageReport.cpp
+++ b/llvm/tools/llvm-cov/CoverageReport.cpp
@@ -123,10 +123,12 @@ raw_ostream::Colors determineCoveragePercentageColor(const T &Info) {
unsigned getLongestCommonPrefixLen(ArrayRef<std::string> Strings) {
unsigned LCP = Strings[0].size();
for (unsigned I = 1, E = Strings.size(); LCP > 0 && I < E; ++I) {
- auto Mismatch =
- std::mismatch(Strings[0].begin(), Strings[0].end(), Strings[I].begin())
- .first;
- LCP = std::min(LCP, (unsigned)std::distance(Strings[0].begin(), Mismatch));
+ unsigned Cursor;
+ StringRef S = Strings[I];
+ for (Cursor = 0; Cursor < LCP && Cursor < S.size(); ++Cursor)
+ if (Strings[0][Cursor] != S[Cursor])
+ break;
+ LCP = std::min(LCP, Cursor);
}
return LCP;
}
OpenPOWER on IntegriCloud