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