[PATCH] D19956: [profile] Remove unnecessary field in raw profile reader

Xinliang David Li via llvm-commits llvm-commits at lists.llvm.org
Thu May 5 16:19:23 PDT 2016


There are two parts of the change -- one in compiler_rt and one in LLVM.
There is an inconsistent state between.

David

On Thu, May 5, 2016 at 4:03 PM, Vitaly Buka <vitalybuka at google.com> wrote:

> This CL probably breaks this bot
> http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux/builds/23853/steps/test%20standalone%20compiler-rt/logs/stdio
>
> On Thu, May 5, 2016 at 12:47 PM David Li via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
>> This revision was automatically updated to reflect the committed changes.
>> Closed by commit rL268667: [profile] Remove unneeded field in raw profile
>> reader (authored by davidxl).
>>
>> Changed prior to commit:
>>   http://reviews.llvm.org/D19956?vs=56240&id=56325#toc
>>
>> Repository:
>>   rL LLVM
>>
>> http://reviews.llvm.org/D19956
>>
>> Files:
>>   llvm/trunk/include/llvm/ProfileData/InstrProfReader.h
>>   llvm/trunk/lib/ProfileData/InstrProfReader.cpp
>>
>> Index: llvm/trunk/include/llvm/ProfileData/InstrProfReader.h
>> ===================================================================
>> --- llvm/trunk/include/llvm/ProfileData/InstrProfReader.h
>> +++ llvm/trunk/include/llvm/ProfileData/InstrProfReader.h
>> @@ -170,8 +170,9 @@
>>    const uint64_t *CountersStart;
>>    const char *NamesStart;
>>    uint64_t NamesSize;
>> +  // After value profile is all read, this pointer points to
>> +  // the header of next profile data (if exists)
>>    const uint8_t *ValueDataStart;
>> -  const char *ProfileEnd;
>>    uint32_t ValueKindLast;
>>    uint32_t CurValueDataSize;
>>
>> @@ -224,6 +225,10 @@
>>      Data++;
>>      ValueDataStart += CurValueDataSize;
>>    }
>> +  const char *getNextHeaderPos() const {
>> +      assert(atEnd());
>> +      return (const char *)ValueDataStart;
>> +  }
>>
>>    const uint64_t *getCounter(IntPtrT CounterPtr) const {
>>      ptrdiff_t Offset = (swap(CounterPtr) - CountersDelta) /
>> sizeof(uint64_t);
>> Index: llvm/trunk/lib/ProfileData/InstrProfReader.cpp
>> ===================================================================
>> --- llvm/trunk/lib/ProfileData/InstrProfReader.cpp
>> +++ llvm/trunk/lib/ProfileData/InstrProfReader.cpp
>> @@ -324,7 +324,6 @@
>>    auto DataSize = swap(Header.DataSize);
>>    auto CountersSize = swap(Header.CountersSize);
>>    NamesSize = swap(Header.NamesSize);
>> -  auto ValueDataSize = swap(Header.ValueDataSize);
>>    ValueKindLast = swap(Header.ValueKindLast);
>>
>>    auto DataSizeInBytes = DataSize *
>> sizeof(RawInstrProf::ProfileData<IntPtrT>);
>> @@ -334,19 +333,17 @@
>>    ptrdiff_t CountersOffset = DataOffset + DataSizeInBytes;
>>    ptrdiff_t NamesOffset = CountersOffset + sizeof(uint64_t) *
>> CountersSize;
>>    ptrdiff_t ValueDataOffset = NamesOffset + NamesSize + PaddingSize;
>> -  size_t ProfileSize = ValueDataOffset + ValueDataSize;
>>
>>    auto *Start = reinterpret_cast<const char *>(&Header);
>> -  if (Start + ProfileSize > DataBuffer->getBufferEnd())
>> +  if (Start + ValueDataOffset > DataBuffer->getBufferEnd())
>>      return error(instrprof_error::bad_header);
>>
>>    Data = reinterpret_cast<const RawInstrProf::ProfileData<IntPtrT> *>(
>>        Start + DataOffset);
>>    DataEnd = Data + DataSize;
>>    CountersStart = reinterpret_cast<const uint64_t *>(Start +
>> CountersOffset);
>>    NamesStart = Start + NamesOffset;
>>    ValueDataStart = reinterpret_cast<const uint8_t *>(Start +
>> ValueDataOffset);
>> -  ProfileEnd = Start + ProfileSize;
>>
>>    std::unique_ptr<InstrProfSymtab> NewSymtab =
>> make_unique<InstrProfSymtab>();
>>    if (auto EC = createSymtab(*NewSymtab.get()))
>> @@ -411,9 +408,9 @@
>>      return success();
>>
>>    ErrorOr<std::unique_ptr<ValueProfData>> VDataPtrOrErr =
>> -      ValueProfData::getValueProfData(ValueDataStart,
>> -                                      (const unsigned char *)ProfileEnd,
>> -                                      getDataEndianness());
>> +      ValueProfData::getValueProfData(
>> +          ValueDataStart, (const unsigned char
>> *)DataBuffer->getBufferEnd(),
>> +          getDataEndianness());
>>
>>    if (VDataPtrOrErr.getError())
>>      return VDataPtrOrErr.getError();
>> @@ -430,7 +427,8 @@
>>  std::error_code
>>  RawInstrProfReader<IntPtrT>::readNextRecord(InstrProfRecord &Record) {
>>    if (atEnd())
>> -    if (std::error_code EC = readNextHeader(ProfileEnd))
>> +    // At this point, ValueDataStart field points to the next header.
>> +    if (std::error_code EC = readNextHeader(getNextHeaderPos()))
>>        return EC;
>>
>>    // Read name ad set it in Record.
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160505/960b63d5/attachment.html>


More information about the llvm-commits mailing list