[llvm] r252783 - Refactoring and fix another instance of asan error
David Blaikie via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 11 12:48:18 PST 2015
On Wed, Nov 11, 2015 at 11:49 AM, Xinliang David Li <davidxl at google.com>
wrote:
>
>
> On Wed, Nov 11, 2015 at 11:38 AM, David Blaikie <dblaikie at gmail.com>
> wrote:
>
>>
>>
>> On Wed, Nov 11, 2015 at 11:31 AM, Xinliang David Li via llvm-commits <
>> llvm-commits at lists.llvm.org> wrote:
>>
>>> Author: davidxl
>>> Date: Wed Nov 11 13:31:53 2015
>>> New Revision: 252783
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=252783&view=rev
>>> Log:
>>> Refactoring and fix another instance of asan error
>>>
>>> Modified:
>>> llvm/trunk/lib/ProfileData/InstrProf.cpp
>>>
>>> Modified: llvm/trunk/lib/ProfileData/InstrProf.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ProfileData/InstrProf.cpp?rev=252783&r1=252782&r2=252783&view=diff
>>>
>>> ==============================================================================
>>> --- llvm/trunk/lib/ProfileData/InstrProf.cpp (original)
>>> +++ llvm/trunk/lib/ProfileData/InstrProf.cpp Wed Nov 11 13:31:53 2015
>>> @@ -244,12 +244,17 @@ void ValueProfData::deserializeTo(InstrP
>>> }
>>> }
>>>
>>> +static ValueProfData *AllocValueProfData(uint32_t TotalSize) {
>>> + void *RawMem = ::operator new(TotalSize);
>>> + ValueProfData *VPDMem = new (RawMem) ValueProfData();
>>> + return VPDMem;
>>> +}
>>>
>>
>> Perhaps this utility should return unique_ptr? Since both the callers
>> want one anyway? (& it ensures safety, etc from the source - rather than
>> having a raw owned pointer crossing that call boundary)
>>
>
> We can do that. Probably leave it till the next cleanup.
>
Actually easier/nicer if independent patches are committed independently,
no need to wait to batch these things. So I just went ahead and committed
the change in r252799.
Thanks,
- David
>
> thanks,
>
> david
>
>
>>
>>> +
>>> std::unique_ptr<ValueProfData>
>>> ValueProfData::serializeFrom(const InstrProfRecord &Record) {
>>> uint32_t TotalSize = getSize(Record);
>>> - void *RawMem = ::operator new(TotalSize);
>>> - ValueProfData *VPDMem = new (RawMem) ValueProfData();
>>> - std::unique_ptr<ValueProfData> VPD(VPDMem);
>>> +
>>> + std::unique_ptr<ValueProfData> VPD(AllocValueProfData(TotalSize));
>>>
>>> VPD->TotalSize = TotalSize;
>>> VPD->NumValueKinds = Record.getNumValueKinds();
>>> @@ -285,8 +290,8 @@ ValueProfData::getValueProfData(const un
>>> if (TotalSize % sizeof(uint64_t))
>>> return instrprof_error::malformed;
>>>
>>> - std::unique_ptr<ValueProfData> VPD(
>>> - reinterpret_cast<ValueProfData *>(new char[TotalSize]));
>>> + std::unique_ptr<ValueProfData> VPD(AllocValueProfData(TotalSize));
>>> +
>>> memcpy(VPD.get(), D, TotalSize);
>>> // Byte swap.
>>> VPD->swapBytesToHost(Endianness);
>>>
>>>
>>> _______________________________________________
>>> 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/20151111/2b300ff9/attachment.html>
More information about the llvm-commits
mailing list