diff options
Diffstat (limited to 'llvm/tools/llvm-cov/CodeCoverage.cpp')
| -rw-r--r-- | llvm/tools/llvm-cov/CodeCoverage.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/llvm/tools/llvm-cov/CodeCoverage.cpp b/llvm/tools/llvm-cov/CodeCoverage.cpp index a7518a3..02448dc 100644 --- a/llvm/tools/llvm-cov/CodeCoverage.cpp +++ b/llvm/tools/llvm-cov/CodeCoverage.cpp @@ -185,6 +185,8 @@ private: std::unique_ptr<SpecialCaseList> NameAllowlist; std::unique_ptr<object::BuildIDFetcher> BIDFetcher; + + bool CheckBinaryIDs; }; } @@ -440,9 +442,9 @@ std::unique_ptr<CoverageMapping> CodeCoverageTool::load() { warning("profile data may be out of date - object is newer", ObjectFilename); auto FS = vfs::getRealFileSystem(); - auto CoverageOrErr = - CoverageMapping::load(ObjectFilenames, PGOFilename, *FS, CoverageArches, - ViewOpts.CompilationDirectory, BIDFetcher.get()); + auto CoverageOrErr = CoverageMapping::load( + ObjectFilenames, PGOFilename, *FS, CoverageArches, + ViewOpts.CompilationDirectory, BIDFetcher.get(), CheckBinaryIDs); if (Error E = CoverageOrErr.takeError()) { error("Failed to load coverage: " + toString(std::move(E))); return nullptr; @@ -761,6 +763,10 @@ int CodeCoverageTool::run(Command Cmd, int argc, const char **argv) { "compilation-dir", cl::init(""), cl::desc("Directory used as a base for relative coverage mapping paths")); + cl::opt<bool> CheckBinaryIDs( + "check-binary-ids", cl::desc("Fail if an object couldn't be found for a " + "binary ID in the profile")); + auto commandLineParser = [&, this](int argc, const char **argv) -> int { cl::ParseCommandLineOptions(argc, argv, "LLVM code coverage tool\n"); ViewOpts.Debug = DebugDump; @@ -770,6 +776,7 @@ int CodeCoverageTool::run(Command Cmd, int argc, const char **argv) { } else { BIDFetcher = std::make_unique<object::BuildIDFetcher>(DebugFileDirectory); } + this->CheckBinaryIDs = CheckBinaryIDs; if (!CovFilename.empty()) ObjectFilenames.emplace_back(CovFilename); |
