From 0e93e26d3742e0660cf0e486b0961160da0f0e3a Mon Sep 17 00:00:00 2001 From: Justin Bogner Date: Mon, 4 May 2015 04:09:38 +0000 Subject: [PATCH] llvm-cov: Warn if object file is newer than profile Looking at coverage with an out of date profile can be confusing. Provide a little hint that something might be wrong. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236408 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/llvm-cov/CodeCoverage.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tools/llvm-cov/CodeCoverage.cpp b/tools/llvm-cov/CodeCoverage.cpp index 0331a02dfcc..f85f3b13b67 100644 --- a/tools/llvm-cov/CodeCoverage.cpp +++ b/tools/llvm-cov/CodeCoverage.cpp @@ -195,7 +195,20 @@ CodeCoverageTool::createSourceFileView(StringRef SourceFile, return View; } +static bool modifiedTimeGT(StringRef LHS, StringRef RHS) { + sys::fs::file_status Status; + if (sys::fs::status(LHS, Status)) + return false; + auto LHSTime = Status.getLastModificationTime(); + if (sys::fs::status(RHS, Status)) + return false; + auto RHSTime = Status.getLastModificationTime(); + return LHSTime > RHSTime; +} + std::unique_ptr CodeCoverageTool::load() { + if (modifiedTimeGT(ObjectFilename, PGOFilename)) + errs() << "warning: profile data may be out of date - object is newer\n"; auto CoverageOrErr = CoverageMapping::load(ObjectFilename, PGOFilename, CoverageArch); if (std::error_code EC = CoverageOrErr.getError()) {