diff options
Diffstat (limited to 'llvm/tools/llvm-cov/CodeCoverage.cpp')
-rw-r--r-- | llvm/tools/llvm-cov/CodeCoverage.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/llvm/tools/llvm-cov/CodeCoverage.cpp b/llvm/tools/llvm-cov/CodeCoverage.cpp index 240acffa779..f2f97163ef1 100644 --- a/llvm/tools/llvm-cov/CodeCoverage.cpp +++ b/llvm/tools/llvm-cov/CodeCoverage.cpp @@ -448,6 +448,8 @@ int CodeCoverageTool::show(int argc, const char **argv, if (!Coverage) return 1; + auto Printer = CoveragePrinter::create(ViewOpts); + if (!Filters.empty()) { // Show functions for (const auto &Function : Coverage->getCoveredFunctions()) { @@ -462,15 +464,14 @@ int CodeCoverageTool::show(int argc, const char **argv, continue; } - auto OSOrErr = - mainView->createOutputFile("functions", /*InToplevel=*/true); + auto OSOrErr = Printer->createViewFile("functions", /*InToplevel=*/true); if (Error E = OSOrErr.takeError()) { error(toString(std::move(E))); return 1; } auto OS = std::move(OSOrErr.get()); mainView->print(*OS.get(), /*WholeFile=*/false, /*ShowSourceName=*/true); - mainView->closeOutputFile(std::move(OS)); + Printer->closeViewFile(std::move(OS)); } return 0; } @@ -483,6 +484,14 @@ int CodeCoverageTool::show(int argc, const char **argv, 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)) { + error(toString(std::move(E))); + return 1; + } + } + for (const auto &SourceFile : SourceFiles) { auto mainView = createSourceFileView(SourceFile, *Coverage); if (!mainView) { @@ -492,7 +501,7 @@ int CodeCoverageTool::show(int argc, const char **argv, continue; } - auto OSOrErr = mainView->createOutputFile(SourceFile, /*InToplevel=*/false); + auto OSOrErr = Printer->createViewFile(SourceFile, /*InToplevel=*/false); if (Error E = OSOrErr.takeError()) { error(toString(std::move(E))); return 1; @@ -500,7 +509,7 @@ int CodeCoverageTool::show(int argc, const char **argv, auto OS = std::move(OSOrErr.get()); mainView->print(*OS.get(), /*Wholefile=*/true, /*ShowSourceName=*/ShowFilenames); - mainView->closeOutputFile(std::move(OS)); + Printer->closeViewFile(std::move(OS)); } return 0; |