summaryrefslogtreecommitdiffstats
path: root/llvm/tools
diff options
context:
space:
mode:
authorMike Aizatsky <aizatsky@chromium.org>2016-03-11 23:28:28 +0000
committerMike Aizatsky <aizatsky@chromium.org>2016-03-11 23:28:28 +0000
commit037fee594b7c7a4d5e49337b0d48cc316cb4f136 (patch)
tree3e888a0df317b588db479abdf6dbf4939a038d12 /llvm/tools
parent22973fd00eae9d02f41e3e59a3446ce825ce2cbc (diff)
downloadbcm5719-llvm-037fee594b7c7a4d5e49337b0d48cc316cb4f136.tar.gz
bcm5719-llvm-037fee594b7c7a4d5e49337b0d48cc316cb4f136.zip
[sancov] using md5 for anchors in attempt to reduce file size.
Differential Revision: http://reviews.llvm.org/D18102 llvm-svn: 263308
Diffstat (limited to 'llvm/tools')
-rw-r--r--llvm/tools/sancov/sancov.cc24
1 files changed, 18 insertions, 6 deletions
diff --git a/llvm/tools/sancov/sancov.cc b/llvm/tools/sancov/sancov.cc
index 07b092e333b..200027677f1 100644
--- a/llvm/tools/sancov/sancov.cc
+++ b/llvm/tools/sancov/sancov.cc
@@ -33,6 +33,7 @@
#include "llvm/Support/ErrorOr.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/LineIterator.h"
+#include "llvm/Support/MD5.h"
#include "llvm/Support/ManagedStatic.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/Path.h"
@@ -487,6 +488,17 @@ static std::string escapeHtml(const std::string &S) {
return Result;
}
+static std::string anchorName(std::string Anchor) {
+ llvm::MD5 Hasher;
+ llvm::MD5::MD5Result Hash;
+ Hasher.update(Anchor);
+ Hasher.final(Hash);
+
+ SmallString<32> HexString;
+ llvm::MD5::stringifyResult(Hash, HexString);
+ return HexString.str().str();
+}
+
static ErrorOr<bool> isCoverageFile(std::string FileName) {
ErrorOr<std::unique_ptr<MemoryBuffer>> BufOrErr =
MemoryBuffer::getFile(FileName);
@@ -826,7 +838,7 @@ public:
}
size_t CovPct = FC.second == 0 ? 100 : 100 * FC.first / FC.second;
- OS << "<tr><td><a href=\"#" << escapeHtml(FileName) << "\">"
+ OS << "<tr><td><a href=\"#" << anchorName(FileName) << "\">"
<< stripPathPrefix(FileName) << "</a></td>"
<< "<td>" << CovPct << "%</td>"
<< "<td>" << FC.first << " (" << FC.second << ")"
@@ -855,7 +867,7 @@ public:
std::pair<size_t, size_t> FC = FileFnCoverage[FileName];
if (FC.first == 0)
continue;
- OS << "<a name=\"" << escapeHtml(FileName) << "\"></a>\n";
+ OS << "<a name=\"" << anchorName(FileName) << "\"></a>\n";
OS << "<h2>" << stripPathPrefix(FileName) << "</h2>\n";
auto NotCoveredFns = NotCoveredFnMap.find(FileName);
@@ -865,7 +877,7 @@ public:
for (auto FileFn : NotCoveredFns->second) {
OS << "<tr><td>";
OS << "<a href=\"#"
- << escapeHtml(FileName + "::" + FileFn.FunctionName) << "\">";
+ << anchorName(FileName + "::" + FileFn.FunctionName) << "\">";
OS << escapeHtml(FileFn.FunctionName) << "</a>";
OS << "</td></tr>\n";
}
@@ -891,7 +903,7 @@ public:
auto It = NotCoveredFnByLoc.find(Loc);
if (It != NotCoveredFnByLoc.end()) {
for (std::string Fn : It->second) {
- OS << "<a name=\"" << escapeHtml(FileName + "::" + Fn)
+ OS << "<a name=\"" << anchorName(FileName + "::" + Fn)
<< "\"></a>";
};
}
@@ -1040,7 +1052,7 @@ public:
// Modules TOC.
if (Coverage.size() > 1) {
for (const auto &CovData : Coverage) {
- OS << "<li><a href=\"#module_" << escapeHtml(CovData->object_file())
+ OS << "<li><a href=\"#module_" << anchorName(CovData->object_file())
<< "\">" << llvm::sys::path::filename(CovData->object_file())
<< "</a></li>\n";
}
@@ -1051,7 +1063,7 @@ public:
OS << "<h2>" << llvm::sys::path::filename(CovData->object_file())
<< "</h2>\n";
}
- OS << "<a name=\"module_" << escapeHtml(CovData->object_file())
+ OS << "<a name=\"module_" << anchorName(CovData->object_file())
<< "\"></a>\n";
CovData->printReport(OS);
}
OpenPOWER on IntegriCloud