Skip to content

Commit f2b067c

Browse files
committedFeb 5, 2017
[llvm-cov] Demangle symbols in function summaries (fixes PR31394)
llvm-svn: 294136
1 parent 6e28bcd commit f2b067c

File tree

4 files changed

+15
-7
lines changed

4 files changed

+15
-7
lines changed
 

‎llvm/test/tools/llvm-cov/demangle.test

+3
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,8 @@ RUN: llvm-cov show %S/Inputs/templateInstantiations.covmapping -instr-profile %S
44
RUN: llvm-profdata merge %S/Inputs/hideUnexecutedSubviews.proftext -o %t.profdata
55
RUN: llvm-cov show %S/Inputs/templateInstantiations.covmapping -instr-profile %t.profdata -Xdemangler sed -Xdemangler 's/_/X/g' -filename-equivalence %S/showTemplateInstantiations.cpp | FileCheck %s
66

7+
// Check that we demangle names when printing out function summaries.
8+
RUN: llvm-cov report %S/Inputs/templateInstantiations.covmapping -instr-profile %S/Inputs/templateInstantiations.profdata -Xdemangler sed -Xdemangler 's/_/X/g' -filename-equivalence %S/showTemplateInstantiations.cpp | FileCheck %s
9+
710
CHECK-DAG: XZ4funcIbEiTX
811
CHECK-DAG: XZ4funcIiEiTX

‎llvm/tools/llvm-cov/CodeCoverage.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -823,7 +823,7 @@ int CodeCoverageTool::report(int argc, const char **argv,
823823
if (SourceFiles.empty())
824824
Report.renderFileReports(llvm::outs());
825825
else
826-
Report.renderFunctionReports(SourceFiles, llvm::outs());
826+
Report.renderFunctionReports(SourceFiles, DC, llvm::outs());
827827
return 0;
828828
}
829829

‎llvm/tools/llvm-cov/CoverageReport.cpp

+7-4
Original file line numberDiff line numberDiff line change
@@ -200,12 +200,14 @@ void CoverageReport::render(const FileCoverageSummary &File,
200200
}
201201

202202
void CoverageReport::render(const FunctionCoverageSummary &Function,
203+
const DemangleCache &DC,
203204
raw_ostream &OS) const {
204205
auto FuncCoverageColor =
205206
determineCoveragePercentageColor(Function.RegionCoverage);
206207
auto LineCoverageColor =
207208
determineCoveragePercentageColor(Function.LineCoverage);
208-
OS << column(Function.Name, FunctionReportColumns[0], Column::RightTrim)
209+
OS << column(DC.demangle(Function.Name), FunctionReportColumns[0],
210+
Column::RightTrim)
209211
<< format("%*u", FunctionReportColumns[1],
210212
(unsigned)Function.RegionCoverage.NumRegions);
211213
Options.colored_ostream(OS, FuncCoverageColor)
@@ -230,6 +232,7 @@ void CoverageReport::render(const FunctionCoverageSummary &Function,
230232
}
231233

232234
void CoverageReport::renderFunctionReports(ArrayRef<std::string> Files,
235+
const DemangleCache &DC,
233236
raw_ostream &OS) {
234237
bool isFirst = true;
235238
for (StringRef Filename : Files) {
@@ -242,7 +245,7 @@ void CoverageReport::renderFunctionReports(ArrayRef<std::string> Files,
242245

243246
std::vector<StringRef> Funcnames;
244247
for (const auto &F : Functions)
245-
Funcnames.emplace_back(F.Name);
248+
Funcnames.emplace_back(DC.demangle(F.Name));
246249
adjustColumnWidths({}, Funcnames);
247250

248251
OS << "File '" << Filename << "':\n";
@@ -262,12 +265,12 @@ void CoverageReport::renderFunctionReports(ArrayRef<std::string> Files,
262265
++Totals.ExecutionCount;
263266
Totals.RegionCoverage += Function.RegionCoverage;
264267
Totals.LineCoverage += Function.LineCoverage;
265-
render(Function, OS);
268+
render(Function, DC, OS);
266269
}
267270
if (Totals.ExecutionCount) {
268271
renderDivider(FunctionReportColumns, OS);
269272
OS << "\n";
270-
render(Totals, OS);
273+
render(Totals, DC, OS);
271274
}
272275
}
273276
}

‎llvm/tools/llvm-cov/CoverageReport.h

+4-2
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,16 @@ class CoverageReport {
2525
const coverage::CoverageMapping &Coverage;
2626

2727
void render(const FileCoverageSummary &File, raw_ostream &OS) const;
28-
void render(const FunctionCoverageSummary &Function, raw_ostream &OS) const;
28+
void render(const FunctionCoverageSummary &Function, const DemangleCache &DC,
29+
raw_ostream &OS) const;
2930

3031
public:
3132
CoverageReport(const CoverageViewOptions &Options,
3233
const coverage::CoverageMapping &Coverage)
3334
: Options(Options), Coverage(Coverage) {}
3435

35-
void renderFunctionReports(ArrayRef<std::string> Files, raw_ostream &OS);
36+
void renderFunctionReports(ArrayRef<std::string> Files,
37+
const DemangleCache &DC, raw_ostream &OS);
3638

3739
/// Prepare file reports for the files specified in \p Files.
3840
static std::vector<FileCoverageSummary>

0 commit comments

Comments
 (0)