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

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Thu May 5 16:03:35 PDT 2016


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/1446b7fc/attachment.html>


More information about the llvm-commits mailing list