/// \brief Coverage mapping information for a single function.
struct CoverageMappingRecord {
StringRef FunctionName;
+ uint64_t FunctionHash;
ArrayRef<StringRef> Filenames;
ArrayRef<CounterExpression> Expressions;
ArrayRef<CounterMappingRegion> MappingRegions;
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:
IntPtrT FunctionNamePtr;
uint32_t FunctionNameSize;
uint32_t CoverageMappingSize;
+ uint64_t FunctionHash;
};
/// \brief The coverage mapping data for a single translation unit.
FunctionName))
return Err;
Records.push_back(ObjectFileCoverageMappingReader::ProfileMappingRecord(
- Version, FunctionName, Mapping, FilenamesBegin,
- Filenames.size() - FilenamesBegin));
+ Version, FunctionName, MappingRecord.FunctionHash, Mapping,
+ FilenamesBegin, Filenames.size() - FilenamesBegin));
}
}
FunctionsFilenames, Expressions, MappingRegions);
if (auto Err = Reader.read(Record))
return Err;
+ Record.FunctionHash = R.FunctionHash;
++CurrentRecord;
return success();
}