From 93695d2395725008c1ce207e8b6a04a982ebb3fc Mon Sep 17 00:00:00 2001 From: Alex Lorenz Date: Thu, 21 Aug 2014 19:23:25 +0000 Subject: [PATCH] Coverage Mapping: add function's hash to coverage function records. The profile data format was recently updated and the new indexing api requires the code coverage tool to know the function's hash as well as the function's name to get the execution counts for a function. Differential Revision: http://reviews.llvm.org/D4994 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216207 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/ProfileData/CoverageMappingReader.h | 10 ++++++---- lib/ProfileData/CoverageMappingReader.cpp | 6 ++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/include/llvm/ProfileData/CoverageMappingReader.h b/include/llvm/ProfileData/CoverageMappingReader.h index 1d8b16e2532..73b02488f2c 100644 --- a/include/llvm/ProfileData/CoverageMappingReader.h +++ b/include/llvm/ProfileData/CoverageMappingReader.h @@ -33,6 +33,7 @@ class ObjectFileCoverageMappingReader; /// \brief Coverage mapping information for a single function. struct CoverageMappingRecord { StringRef FunctionName; + uint64_t FunctionHash; ArrayRef Filenames; ArrayRef Expressions; ArrayRef MappingRegions; @@ -143,16 +144,17 @@ public: struct ProfileMappingRecord { CoverageMappingVersion Version; StringRef FunctionName; + uint64_t FunctionHash; StringRef CoverageMapping; size_t FilenamesBegin; size_t FilenamesSize; ProfileMappingRecord(CoverageMappingVersion Version, StringRef FunctionName, - StringRef CoverageMapping, size_t FilenamesBegin, - size_t FilenamesSize) + uint64_t FunctionHash, StringRef CoverageMapping, + size_t FilenamesBegin, size_t FilenamesSize) : Version(Version), FunctionName(FunctionName), - CoverageMapping(CoverageMapping), FilenamesBegin(FilenamesBegin), - FilenamesSize(FilenamesSize) {} + FunctionHash(FunctionHash), CoverageMapping(CoverageMapping), + FilenamesBegin(FilenamesBegin), FilenamesSize(FilenamesSize) {} }; private: diff --git a/lib/ProfileData/CoverageMappingReader.cpp b/lib/ProfileData/CoverageMappingReader.cpp index 965e085f9d9..f10ae05c0f9 100644 --- a/lib/ProfileData/CoverageMappingReader.cpp +++ b/lib/ProfileData/CoverageMappingReader.cpp @@ -308,6 +308,7 @@ template struct CoverageMappingFunctionRecord { IntPtrT FunctionNamePtr; uint32_t FunctionNameSize; uint32_t CoverageMappingSize; + uint64_t FunctionHash; }; /// \brief The coverage mapping data for a single translation unit. @@ -422,8 +423,8 @@ std::error_code readCoverageMappingData( FunctionName)) return Err; Records.push_back(ObjectFileCoverageMappingReader::ProfileMappingRecord( - Version, FunctionName, Mapping, FilenamesBegin, - Filenames.size() - FilenamesBegin)); + Version, FunctionName, MappingRecord.FunctionHash, Mapping, + FilenamesBegin, Filenames.size() - FilenamesBegin)); } } @@ -485,6 +486,7 @@ ObjectFileCoverageMappingReader::readNextRecord(CoverageMappingRecord &Record) { FunctionsFilenames, Expressions, MappingRegions); if (auto Err = Reader.read(Record)) return Err; + Record.FunctionHash = R.FunctionHash; ++CurrentRecord; return success(); } -- 2.34.1