X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FProfileData%2FCoverageMappingReader.cpp;h=c8108d4ce9945e9759c38c71e0559261cff5d3ff;hb=d2ea3168ae9117324582210007a18ffc31fb6586;hp=75ade55e2ed148e98b81e92fff9e0f2ffcaa8249;hpb=5819748a2df0c976f88a3918a0293ae5e5cd5617;p=oota-llvm.git diff --git a/lib/ProfileData/CoverageMappingReader.cpp b/lib/ProfileData/CoverageMappingReader.cpp index 75ade55e2ed..c8108d4ce99 100644 --- a/lib/ProfileData/CoverageMappingReader.cpp +++ b/lib/ProfileData/CoverageMappingReader.cpp @@ -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::max())) return Err; - if (auto Err = - readIntMax(ColumnStart, std::numeric_limits::max())) + if (auto Err = readULEB128(CodeBeforeColumnStart)) return Err; + bool HasCodeBefore = CodeBeforeColumnStart & 1; + uint64_t ColumnStart = CodeBeforeColumnStart >> + CounterMappingRegion::EncodingHasCodeBeforeBits; + if (ColumnStart > std::numeric_limits::max()) + return error(instrprof_error::malformed); if (auto Err = readIntMax(NumLines, std::numeric_limits::max())) return Err; if (auto Err = readIntMax(ColumnEnd, std::numeric_limits::max())) @@ -194,9 +198,9 @@ std::error_code RawCoverageMappingReader::readMappingRegionsSubArray( ColumnStart = 1; ColumnEnd = std::numeric_limits::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(); @@ -282,7 +286,7 @@ ObjectFileCoverageMappingReader::ObjectFileCoverageMappingReader( if (!File) error(File.getError()); else - Object.reset(File.get()); + Object = std::move(File.get()); } ObjectFileCoverageMappingReader::ObjectFileCoverageMappingReader( @@ -292,7 +296,7 @@ ObjectFileCoverageMappingReader::ObjectFileCoverageMappingReader( if (!File) error(File.getError()); else - Object.reset(File.get()); + Object = std::move(File.get()); } namespace {