mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-21 02:24:22 +00:00
Coverage: add HasCodeBefore flag to a mapping region.
This flag will be used by the coverage tool to help compute the execution counts for each line in a source file. Differential Revision: http://reviews.llvm.org/D4746 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214740 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -170,13 +170,17 @@ std::error_code RawCoverageMappingReader::readMappingRegionsSubArray(
|
||||
}
|
||||
|
||||
// Read the source range.
|
||||
uint64_t LineStartDelta, ColumnStart, NumLines, ColumnEnd;
|
||||
uint64_t LineStartDelta, CodeBeforeColumnStart, NumLines, ColumnEnd;
|
||||
if (auto Err =
|
||||
readIntMax(LineStartDelta, std::numeric_limits<unsigned>::max()))
|
||||
return Err;
|
||||
if (auto Err =
|
||||
readIntMax(ColumnStart, std::numeric_limits<unsigned>::max()))
|
||||
if (auto Err = readULEB128(CodeBeforeColumnStart))
|
||||
return Err;
|
||||
bool HasCodeBefore = CodeBeforeColumnStart & 1;
|
||||
uint64_t ColumnStart = CodeBeforeColumnStart >>
|
||||
CounterMappingRegion::EncodingHasCodeBeforeBits;
|
||||
if (ColumnStart > std::numeric_limits<unsigned>::max())
|
||||
return error(instrprof_error::malformed);
|
||||
if (auto Err = readIntMax(NumLines, std::numeric_limits<unsigned>::max()))
|
||||
return Err;
|
||||
if (auto Err = readIntMax(ColumnEnd, std::numeric_limits<unsigned>::max()))
|
||||
@ -194,9 +198,9 @@ std::error_code RawCoverageMappingReader::readMappingRegionsSubArray(
|
||||
ColumnStart = 1;
|
||||
ColumnEnd = std::numeric_limits<unsigned>::max();
|
||||
}
|
||||
MappingRegions.push_back(
|
||||
CounterMappingRegion(C, InferredFileID, LineStart, ColumnStart,
|
||||
LineStart + NumLines, ColumnEnd, Kind));
|
||||
MappingRegions.push_back(CounterMappingRegion(
|
||||
C, InferredFileID, LineStart, ColumnStart, LineStart + NumLines,
|
||||
ColumnEnd, HasCodeBefore, Kind));
|
||||
MappingRegions.back().ExpandedFileID = ExpandedFileID;
|
||||
}
|
||||
return success();
|
||||
|
Reference in New Issue
Block a user