summaryrefslogtreecommitdiff
path: root/tools/llvm-cov
diff options
context:
space:
mode:
authorSean Eveson <eveson.sean@gmail.com>2017-09-27 16:20:07 +0000
committerSean Eveson <eveson.sean@gmail.com>2017-09-27 16:20:07 +0000
commit950974fdb5b254e8b79390d0ba844462d68474de (patch)
tree2cd727d3892c2d0d7894e8a503dc2b56b65428fe /tools/llvm-cov
parent13e889d253cc0ebc982da3ef400e7ed3396aaf0a (diff)
Revert "[llvm-cov] Create directory structure when filtering using -name*= options"
Test failures. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@314314 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-cov')
-rw-r--r--tools/llvm-cov/CodeCoverage.cpp77
-rw-r--r--tools/llvm-cov/CoverageReport.cpp15
-rw-r--r--tools/llvm-cov/CoverageReport.h10
-rw-r--r--tools/llvm-cov/SourceCoverageView.cpp5
-rw-r--r--tools/llvm-cov/SourceCoverageView.h6
-rw-r--r--tools/llvm-cov/SourceCoverageViewHTML.cpp10
-rw-r--r--tools/llvm-cov/SourceCoverageViewHTML.h3
-rw-r--r--tools/llvm-cov/SourceCoverageViewText.cpp8
-rw-r--r--tools/llvm-cov/SourceCoverageViewText.h3
9 files changed, 53 insertions, 84 deletions
diff --git a/tools/llvm-cov/CodeCoverage.cpp b/tools/llvm-cov/CodeCoverage.cpp
index 811ac53e244..1ea54a8cffd 100644
--- a/tools/llvm-cov/CodeCoverage.cpp
+++ b/tools/llvm-cov/CodeCoverage.cpp
@@ -35,9 +35,7 @@
#include "llvm/Support/Threading.h"
#include "llvm/Support/ThreadPool.h"
#include "llvm/Support/ToolOutputFile.h"
-
#include <functional>
-#include <map>
#include <system_error>
using namespace llvm;
@@ -528,8 +526,7 @@ void CodeCoverageTool::writeSourceFileView(StringRef SourceFile,
auto OS = std::move(OSOrErr.get());
View->print(*OS.get(), /*Wholefile=*/true,
- /*ShowSourceName=*/ShowFilenames,
- /*ShowTitle=*/ViewOpts.hasOutputDirectory());
+ /*ShowSourceName=*/ShowFilenames);
Printer->closeViewFile(std::move(OS));
}
@@ -848,54 +845,29 @@ int CodeCoverageTool::show(int argc, const char **argv,
auto Printer = CoveragePrinter::create(ViewOpts);
- if (SourceFiles.empty())
- // Get the source files from the function coverage mapping.
- for (StringRef Filename : Coverage->getUniqueSourceFiles())
- SourceFiles.push_back(Filename);
-
- // Create an index out of the source files.
- if (ViewOpts.hasOutputDirectory()) {
- if (Error E = Printer->createIndexFile(SourceFiles, *Coverage, Filters)) {
- error("Could not create index file!", toString(std::move(E)));
+ if (!Filters.empty()) {
+ auto OSOrErr = Printer->createViewFile("functions", /*InToplevel=*/true);
+ if (Error E = OSOrErr.takeError()) {
+ error("Could not create view file!", toString(std::move(E)));
return 1;
}
- }
+ auto OS = std::move(OSOrErr.get());
- if (!Filters.empty()) {
- // Build the map of filenames to functions.
- std::map<llvm::StringRef, std::vector<const FunctionRecord *>>
- FilenameFunctionMap;
- for (const auto &SourceFile : SourceFiles)
- for (const auto &Function : Coverage->getCoveredFunctions(SourceFile))
- if (Filters.matches(*Coverage.get(), Function))
- FilenameFunctionMap[SourceFile].push_back(&Function);
-
- // Only print filter matching functions for each file.
- for (const auto &FileFunc : FilenameFunctionMap) {
- const StringRef &File = FileFunc.first;
- const auto &Functions = FileFunc.second;
-
- auto OSOrErr = Printer->createViewFile(File, /*InToplevel=*/false);
- if (Error E = OSOrErr.takeError()) {
- error("Could not create view file!", toString(std::move(E)));
- return 1;
- }
- auto OS = std::move(OSOrErr.get());
-
- bool ShowTitle = true;
- for (const auto *Function : Functions) {
- auto FunctionView = createFunctionView(*Function, *Coverage);
- if (!FunctionView) {
- warning("Could not read coverage for '" + Function->Name + "'.");
- continue;
- }
- FunctionView->print(*OS.get(), /*WholeFile=*/false,
- /*ShowSourceName=*/true, ShowTitle);
- ShowTitle = false;
+ // Show functions.
+ for (const auto &Function : Coverage->getCoveredFunctions()) {
+ if (!Filters.matches(*Coverage.get(), Function))
+ continue;
+
+ auto mainView = createFunctionView(Function, *Coverage);
+ if (!mainView) {
+ warning("Could not read coverage for '" + Function.Name + "'.");
+ continue;
}
- Printer->closeViewFile(std::move(OS));
+ mainView->print(*OS.get(), /*WholeFile=*/false, /*ShowSourceName=*/true);
}
+
+ Printer->closeViewFile(std::move(OS));
return 0;
}
@@ -904,6 +876,19 @@ int CodeCoverageTool::show(int argc, const char **argv,
(SourceFiles.size() != 1) || ViewOpts.hasOutputDirectory() ||
(ViewOpts.Format == CoverageViewOptions::OutputFormat::HTML);
+ if (SourceFiles.empty())
+ // Get the source files from the function coverage mapping.
+ for (StringRef Filename : Coverage->getUniqueSourceFiles())
+ SourceFiles.push_back(Filename);
+
+ // Create an index out of the source files.
+ if (ViewOpts.hasOutputDirectory()) {
+ if (Error E = Printer->createIndexFile(SourceFiles, *Coverage)) {
+ error("Could not create index file!", toString(std::move(E)));
+ return 1;
+ }
+ }
+
// If NumThreads is not specified, auto-detect a good default.
if (NumThreads == 0)
NumThreads =
diff --git a/tools/llvm-cov/CoverageReport.cpp b/tools/llvm-cov/CoverageReport.cpp
index 5c8ffe1216d..4c02bbcf2a3 100644
--- a/tools/llvm-cov/CoverageReport.cpp
+++ b/tools/llvm-cov/CoverageReport.cpp
@@ -322,8 +322,7 @@ void CoverageReport::renderFunctionReports(ArrayRef<std::string> Files,
std::vector<FileCoverageSummary> CoverageReport::prepareFileReports(
const coverage::CoverageMapping &Coverage, FileCoverageSummary &Totals,
- ArrayRef<std::string> Files, const CoverageViewOptions &Options,
- const CoverageFilter &Filters) {
+ ArrayRef<std::string> Files, const CoverageViewOptions &Options) {
std::vector<FileCoverageSummary> FileReports;
unsigned LCP = getRedundantPrefixLen(Files);
@@ -333,15 +332,11 @@ std::vector<FileCoverageSummary> CoverageReport::prepareFileReports(
for (const auto &Group : Coverage.getInstantiationGroups(Filename)) {
std::vector<FunctionCoverageSummary> InstantiationSummaries;
for (const coverage::FunctionRecord *F : Group.getInstantiations()) {
- if (!Filters.matches(Coverage, *F))
- continue;
auto InstantiationSummary = FunctionCoverageSummary::get(Coverage, *F);
Summary.addInstantiation(InstantiationSummary);
Totals.addInstantiation(InstantiationSummary);
InstantiationSummaries.push_back(InstantiationSummary);
}
- if (InstantiationSummaries.empty())
- continue;
auto GroupSummary =
FunctionCoverageSummary::get(Group, InstantiationSummaries);
@@ -364,15 +359,13 @@ void CoverageReport::renderFileReports(raw_ostream &OS) const {
std::vector<std::string> UniqueSourceFiles;
for (StringRef SF : Coverage.getUniqueSourceFiles())
UniqueSourceFiles.emplace_back(SF.str());
- renderFileReports(OS, UniqueSourceFiles, CoverageFiltersMatchAll());
+ renderFileReports(OS, UniqueSourceFiles);
}
void CoverageReport::renderFileReports(raw_ostream &OS,
- ArrayRef<std::string> Files,
- const CoverageFilter &Filters) const {
+ ArrayRef<std::string> Files) const {
FileCoverageSummary Totals("TOTAL");
- auto FileReports =
- prepareFileReports(Coverage, Totals, Files, Options, Filters);
+ auto FileReports = prepareFileReports(Coverage, Totals, Files, Options);
std::vector<StringRef> Filenames;
for (const FileCoverageSummary &FCS : FileReports)
diff --git a/tools/llvm-cov/CoverageReport.h b/tools/llvm-cov/CoverageReport.h
index d78f2e4c2bd..242dc7fe7ba 100644
--- a/tools/llvm-cov/CoverageReport.h
+++ b/tools/llvm-cov/CoverageReport.h
@@ -14,7 +14,6 @@
#ifndef LLVM_COV_COVERAGEREPORT_H
#define LLVM_COV_COVERAGEREPORT_H
-#include "CoverageFilters.h"
#include "CoverageSummaryInfo.h"
#include "CoverageViewOptions.h"
@@ -41,16 +40,13 @@ public:
static std::vector<FileCoverageSummary>
prepareFileReports(const coverage::CoverageMapping &Coverage,
FileCoverageSummary &Totals, ArrayRef<std::string> Files,
- const CoverageViewOptions &Options,
- const CoverageFilter &Filters = CoverageFiltersMatchAll());
+ const CoverageViewOptions &Options);
/// Render file reports for every unique file in the coverage mapping.
void renderFileReports(raw_ostream &OS) const;
- /// Render file reports for the files specified in \p Files and the functions
- /// in \p Filters.
- void renderFileReports(raw_ostream &OS, ArrayRef<std::string> Files,
- const CoverageFilter &Filters) const;
+ /// Render file reports for the files specified in \p Files.
+ void renderFileReports(raw_ostream &OS, ArrayRef<std::string> Files) const;
};
} // end namespace llvm
diff --git a/tools/llvm-cov/SourceCoverageView.cpp b/tools/llvm-cov/SourceCoverageView.cpp
index f944dc62b9e..dc00b802e38 100644
--- a/tools/llvm-cov/SourceCoverageView.cpp
+++ b/tools/llvm-cov/SourceCoverageView.cpp
@@ -164,9 +164,8 @@ void SourceCoverageView::addInstantiation(
}
void SourceCoverageView::print(raw_ostream &OS, bool WholeFile,
- bool ShowSourceName, bool ShowTitle,
- unsigned ViewDepth) {
- if (ShowTitle)
+ bool ShowSourceName, unsigned ViewDepth) {
+ if (WholeFile && getOptions().hasOutputDirectory())
renderTitle(OS, "Coverage Report");
renderViewHeader(OS);
diff --git a/tools/llvm-cov/SourceCoverageView.h b/tools/llvm-cov/SourceCoverageView.h
index 7c7e8781364..72d6866ed7d 100644
--- a/tools/llvm-cov/SourceCoverageView.h
+++ b/tools/llvm-cov/SourceCoverageView.h
@@ -22,7 +22,6 @@
namespace llvm {
-class CoverageFilter;
class SourceCoverageView;
/// \brief A view that represents a macro or include expansion.
@@ -112,8 +111,7 @@ public:
/// \brief Create an index which lists reports for the given source files.
virtual Error createIndexFile(ArrayRef<std::string> SourceFiles,
- const coverage::CoverageMapping &Coverage,
- const CoverageFilter &Filters) = 0;
+ const coverage::CoverageMapping &Coverage) = 0;
/// @}
};
@@ -260,7 +258,7 @@ public:
/// \brief Print the code coverage information for a specific portion of a
/// source file to the output stream.
void print(raw_ostream &OS, bool WholeFile, bool ShowSourceName,
- bool ShowTitle, unsigned ViewDepth = 0);
+ unsigned ViewDepth = 0);
};
} // namespace llvm
diff --git a/tools/llvm-cov/SourceCoverageViewHTML.cpp b/tools/llvm-cov/SourceCoverageViewHTML.cpp
index a031f184825..300a0162bd1 100644
--- a/tools/llvm-cov/SourceCoverageViewHTML.cpp
+++ b/tools/llvm-cov/SourceCoverageViewHTML.cpp
@@ -366,7 +366,7 @@ void CoveragePrinterHTML::emitFileSummary(raw_ostream &OS, StringRef SF,
Error CoveragePrinterHTML::createIndexFile(
ArrayRef<std::string> SourceFiles,
- const coverage::CoverageMapping &Coverage, const CoverageFilter &Filters) {
+ const coverage::CoverageMapping &Coverage) {
// Emit the default stylesheet.
auto CSSOrErr = createOutputStream("style", "css", /*InToplevel=*/true);
if (Error E = CSSOrErr.takeError())
@@ -404,8 +404,8 @@ Error CoveragePrinterHTML::createIndexFile(
OSRef << BeginCenteredDiv << BeginTable;
emitColumnLabelsForIndex(OSRef, Opts);
FileCoverageSummary Totals("TOTALS");
- auto FileReports = CoverageReport::prepareFileReports(
- Coverage, Totals, SourceFiles, Opts, Filters);
+ auto FileReports =
+ CoverageReport::prepareFileReports(Coverage, Totals, SourceFiles, Opts);
bool EmptyFiles = false;
for (unsigned I = 0, E = FileReports.size(); I < E; ++I) {
if (FileReports[I].FunctionCoverage.getNumFunctions())
@@ -620,7 +620,7 @@ void SourceCoverageViewHTML::renderExpansionView(raw_ostream &OS,
unsigned ViewDepth) {
OS << BeginExpansionDiv;
ESV.View->print(OS, /*WholeFile=*/false, /*ShowSourceName=*/false,
- /*ShowTitle=*/false, ViewDepth + 1);
+ ViewDepth + 1);
OS << EndExpansionDiv;
}
@@ -636,7 +636,7 @@ void SourceCoverageViewHTML::renderInstantiationView(raw_ostream &OS,
<< EndSourceNameDiv;
else
ISV.View->print(OS, /*WholeFile=*/false, /*ShowSourceName=*/true,
- /*ShowTitle=*/false, ViewDepth);
+ ViewDepth);
OS << EndExpansionDiv;
}
diff --git a/tools/llvm-cov/SourceCoverageViewHTML.h b/tools/llvm-cov/SourceCoverageViewHTML.h
index e11111a5ad2..8cb73567a2e 100644
--- a/tools/llvm-cov/SourceCoverageViewHTML.h
+++ b/tools/llvm-cov/SourceCoverageViewHTML.h
@@ -29,8 +29,7 @@ public:
void closeViewFile(OwnedStream OS) override;
Error createIndexFile(ArrayRef<std::string> SourceFiles,
- const coverage::CoverageMapping &Coverage,
- const CoverageFilter &Filters) override;
+ const coverage::CoverageMapping &Coverage) override;
CoveragePrinterHTML(const CoverageViewOptions &Opts)
: CoveragePrinter(Opts) {}
diff --git a/tools/llvm-cov/SourceCoverageViewText.cpp b/tools/llvm-cov/SourceCoverageViewText.cpp
index b2902df185d..a78c0575cdc 100644
--- a/tools/llvm-cov/SourceCoverageViewText.cpp
+++ b/tools/llvm-cov/SourceCoverageViewText.cpp
@@ -30,7 +30,7 @@ void CoveragePrinterText::closeViewFile(OwnedStream OS) {
Error CoveragePrinterText::createIndexFile(
ArrayRef<std::string> SourceFiles,
- const coverage::CoverageMapping &Coverage, const CoverageFilter &Filters) {
+ const coverage::CoverageMapping &Coverage) {
auto OSOrErr = createOutputStream("index", "txt", /*InToplevel=*/true);
if (Error E = OSOrErr.takeError())
return E;
@@ -38,7 +38,7 @@ Error CoveragePrinterText::createIndexFile(
raw_ostream &OSRef = *OS.get();
CoverageReport Report(Opts, Coverage);
- Report.renderFileReports(OSRef, SourceFiles, Filters);
+ Report.renderFileReports(OSRef, SourceFiles);
Opts.colored_ostream(OSRef, raw_ostream::CYAN) << "\n"
<< Opts.getLLVMVersionString();
@@ -210,7 +210,7 @@ void SourceCoverageViewText::renderExpansionView(raw_ostream &OS,
errs() << "Expansion at line " << ESV.getLine() << ", " << ESV.getStartCol()
<< " -> " << ESV.getEndCol() << '\n';
ESV.View->print(OS, /*WholeFile=*/false, /*ShowSourceName=*/false,
- /*ShowTitle=*/false, ViewDepth + 1);
+ ViewDepth + 1);
}
void SourceCoverageViewText::renderInstantiationView(raw_ostream &OS,
@@ -223,7 +223,7 @@ void SourceCoverageViewText::renderInstantiationView(raw_ostream &OS,
<< "Unexecuted instantiation: " << ISV.FunctionName << "\n";
else
ISV.View->print(OS, /*WholeFile=*/false, /*ShowSourceName=*/true,
- /*ShowTitle=*/false, ViewDepth);
+ ViewDepth);
}
void SourceCoverageViewText::renderTitle(raw_ostream &OS, StringRef Title) {
diff --git a/tools/llvm-cov/SourceCoverageViewText.h b/tools/llvm-cov/SourceCoverageViewText.h
index 3a04070d1ac..c3f20de9297 100644
--- a/tools/llvm-cov/SourceCoverageViewText.h
+++ b/tools/llvm-cov/SourceCoverageViewText.h
@@ -27,8 +27,7 @@ public:
void closeViewFile(OwnedStream OS) override;
Error createIndexFile(ArrayRef<std::string> SourceFiles,
- const coverage::CoverageMapping &Coverage,
- const CoverageFilter &Filters) override;
+ const coverage::CoverageMapping &Coverage) override;
CoveragePrinterText(const CoverageViewOptions &Opts)
: CoveragePrinter(Opts) {}