diff options
author | Vedant Kumar <vsk@apple.com> | 2017-02-05 20:11:03 +0000 |
---|---|---|
committer | Vedant Kumar <vsk@apple.com> | 2017-02-05 20:11:03 +0000 |
commit | f2b067c42eb6691fb1b39ba2c4c66f9165a12364 (patch) | |
tree | c030b5fe490378ceecd48230e03cc87a5a2decda | |
parent | 6e28bcdc27b222077085e2afb8c30f47e455e790 (diff) | |
download | bcm5719-llvm-f2b067c42eb6691fb1b39ba2c4c66f9165a12364.tar.gz bcm5719-llvm-f2b067c42eb6691fb1b39ba2c4c66f9165a12364.zip |
[llvm-cov] Demangle symbols in function summaries (fixes PR31394)
llvm-svn: 294136
-rw-r--r-- | llvm/test/tools/llvm-cov/demangle.test | 3 | ||||
-rw-r--r-- | llvm/tools/llvm-cov/CodeCoverage.cpp | 2 | ||||
-rw-r--r-- | llvm/tools/llvm-cov/CoverageReport.cpp | 11 | ||||
-rw-r--r-- | llvm/tools/llvm-cov/CoverageReport.h | 6 |
4 files changed, 15 insertions, 7 deletions
diff --git a/llvm/test/tools/llvm-cov/demangle.test b/llvm/test/tools/llvm-cov/demangle.test index 90a26b73406..360fcd97249 100644 --- a/llvm/test/tools/llvm-cov/demangle.test +++ b/llvm/test/tools/llvm-cov/demangle.test @@ -4,5 +4,8 @@ RUN: llvm-cov show %S/Inputs/templateInstantiations.covmapping -instr-profile %S RUN: llvm-profdata merge %S/Inputs/hideUnexecutedSubviews.proftext -o %t.profdata 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 +// Check that we demangle names when printing out function summaries. +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 + CHECK-DAG: XZ4funcIbEiTX CHECK-DAG: XZ4funcIiEiTX diff --git a/llvm/tools/llvm-cov/CodeCoverage.cpp b/llvm/tools/llvm-cov/CodeCoverage.cpp index 52169b6607c..a23dcc9ee1a 100644 --- a/llvm/tools/llvm-cov/CodeCoverage.cpp +++ b/llvm/tools/llvm-cov/CodeCoverage.cpp @@ -823,7 +823,7 @@ int CodeCoverageTool::report(int argc, const char **argv, if (SourceFiles.empty()) Report.renderFileReports(llvm::outs()); else - Report.renderFunctionReports(SourceFiles, llvm::outs()); + Report.renderFunctionReports(SourceFiles, DC, llvm::outs()); return 0; } diff --git a/llvm/tools/llvm-cov/CoverageReport.cpp b/llvm/tools/llvm-cov/CoverageReport.cpp index e88cb186acd..78333d09ad8 100644 --- a/llvm/tools/llvm-cov/CoverageReport.cpp +++ b/llvm/tools/llvm-cov/CoverageReport.cpp @@ -200,12 +200,14 @@ void CoverageReport::render(const FileCoverageSummary &File, } void CoverageReport::render(const FunctionCoverageSummary &Function, + const DemangleCache &DC, raw_ostream &OS) const { auto FuncCoverageColor = determineCoveragePercentageColor(Function.RegionCoverage); auto LineCoverageColor = determineCoveragePercentageColor(Function.LineCoverage); - OS << column(Function.Name, FunctionReportColumns[0], Column::RightTrim) + OS << column(DC.demangle(Function.Name), FunctionReportColumns[0], + Column::RightTrim) << format("%*u", FunctionReportColumns[1], (unsigned)Function.RegionCoverage.NumRegions); Options.colored_ostream(OS, FuncCoverageColor) @@ -230,6 +232,7 @@ void CoverageReport::render(const FunctionCoverageSummary &Function, } void CoverageReport::renderFunctionReports(ArrayRef<std::string> Files, + const DemangleCache &DC, raw_ostream &OS) { bool isFirst = true; for (StringRef Filename : Files) { @@ -242,7 +245,7 @@ void CoverageReport::renderFunctionReports(ArrayRef<std::string> Files, std::vector<StringRef> Funcnames; for (const auto &F : Functions) - Funcnames.emplace_back(F.Name); + Funcnames.emplace_back(DC.demangle(F.Name)); adjustColumnWidths({}, Funcnames); OS << "File '" << Filename << "':\n"; @@ -262,12 +265,12 @@ void CoverageReport::renderFunctionReports(ArrayRef<std::string> Files, ++Totals.ExecutionCount; Totals.RegionCoverage += Function.RegionCoverage; Totals.LineCoverage += Function.LineCoverage; - render(Function, OS); + render(Function, DC, OS); } if (Totals.ExecutionCount) { renderDivider(FunctionReportColumns, OS); OS << "\n"; - render(Totals, OS); + render(Totals, DC, OS); } } } diff --git a/llvm/tools/llvm-cov/CoverageReport.h b/llvm/tools/llvm-cov/CoverageReport.h index 7a416497e25..071be2e2159 100644 --- a/llvm/tools/llvm-cov/CoverageReport.h +++ b/llvm/tools/llvm-cov/CoverageReport.h @@ -25,14 +25,16 @@ class CoverageReport { const coverage::CoverageMapping &Coverage; void render(const FileCoverageSummary &File, raw_ostream &OS) const; - void render(const FunctionCoverageSummary &Function, raw_ostream &OS) const; + void render(const FunctionCoverageSummary &Function, const DemangleCache &DC, + raw_ostream &OS) const; public: CoverageReport(const CoverageViewOptions &Options, const coverage::CoverageMapping &Coverage) : Options(Options), Coverage(Coverage) {} - void renderFunctionReports(ArrayRef<std::string> Files, raw_ostream &OS); + void renderFunctionReports(ArrayRef<std::string> Files, + const DemangleCache &DC, raw_ostream &OS); /// Prepare file reports for the files specified in \p Files. static std::vector<FileCoverageSummary> |