[llvm] r252563 - [PGO] Make indexed value profile data more compact

Diego Novillo via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 10 08:30:55 PST 2015


Thanks!
On Nov 10, 2015 11:24, "Xinliang David Li" <davidxl at google.com> wrote:

> I should have a fix soon.
>
> David
>
> On Tue, Nov 10, 2015 at 8:10 AM, Diego Novillo <dnovillo at google.com>
> wrote:
>
>>
>>
>> On Mon, Nov 9, 2015 at 7:24 PM, Xinliang David Li via llvm-commits <
>> llvm-commits at lists.llvm.org> wrote:
>>
>> +std::unique_ptr<ValueProfData>
>>> +ValueProfData::serializeFrom(const InstrProfRecord &Record) {
>>> +  uint32_t TotalSize = getSize(Record);
>>> +  std::unique_ptr<ValueProfData> VPD(
>>> +      reinterpret_cast<ValueProfData *>(new char[TotalSize]));
>>>
>>
>> David, this is causing ASan failures on the LLVM testsuite.
>> Specifically, this allocation via new[] is then deallocated with just
>> delete by the runtime std::unique_ptr support.  So, ASan complains with:
>>
>>  ERROR: AddressSanitizer: alloc-dealloc-mismatch (operator new [] vs
>> operator delete) on 0x60200000ee90
>>
>>     #0 0x4de26b in operator delete(void*) llvm/projects/compiler-rt/lib/asan/asan_new_delete.cc:94:3
>>     #1 0x7dfaf0 in std::unique_ptr<llvm::IndexedInstrProf::ValueProfData, std::default_delete<llvm::IndexedInstrProf::ValueProfData> >::~unique_ptr() [...]/bits/unique_ptr.h:236:4
>>     #2 0x7fd8c6 in (anonymous namespace)::InstrProfRecordTrait::EmitData(llvm::raw_ostream&, llvm::StringRef, llvm::SmallDenseMap<unsigned long, llvm::InstrProfRecord, 1u, llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long, llvm::InstrProfRecord> > const*, unsigned long) llvm/lib/ProfileData/InstrProfWriter.cpp:85:5
>>
>> 0x60200000ee90 is located 0 bytes inside of 8-byte region [0x60200000ee90,0x60200000ee98)
>> allocated by thread T0 here:
>>     #0 0x4dde1b in operator new[](unsigned long) llvm/projects/compiler-rt/lib/asan/asan_new_delete.cc:64:37
>>     #1 0x7de5e1 in llvm::IndexedInstrProf::ValueProfData::serializeFrom(llvm::InstrProfRecord const&) llvm/lib/ProfileData/InstrProf.cpp:251:41
>>     #2 0x7fd883 in (anonymous namespace)::InstrProfRecordTrait::EmitData(llvm::raw_ostream&, llvm::StringRef, llvm::SmallDenseMap<unsigned long, llvm::InstrProfRecord, 1u, llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long, llvm::InstrProfRecord> > const*, unsigned long) llvm/lib/ProfileData/InstrProfWriter.cpp:81:11
>>
>>
>>
>> Not quite sure what the right fix for this usage pattern is wrt
>> std::unique_ptr.  Mind if I revert the patch while you find a fix?
>>
>>
>> Thanks.  Diego.
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151110/c60fcd34/attachment.html>


More information about the llvm-commits mailing list