[LLVMdev] [RFC] Moving OnDiskHashTable from clang to LLVM

Michael Spencer bigcheesegs at gmail.com
Sun Mar 23 03:00:20 PDT 2014


On Sat, Mar 22, 2014 at 8:45 PM, Rafael EspĂ­ndola
<rafael.espindola at gmail.com> wrote:
>> They're obviously related. Endian.h defines types like ulittle32, which
>> DTRT when read and written from memory, whereas clang::io has functions
>> to read and write memory like so:
>>
>>     void Emit32(raw_ostream& Out, uint32_t V);
>>     uint32_t ReadLE32(const unsigned char *&Data);
>>     uint32_t ReadUnalignedLE32(const unsigned char *&Data);
>>
>> The (aligned) ReadLE32 is easily represented by the stuff in Endian.h,
>> but the write to an ostream and reading unaligned aren't addressed very
>> well at present.
>
> ulittle32 is actually unaligned:
>
> typedef detail::packed_endian_specific_integral
>                   <uint32_t, little, unaligned> ulittle32_t
>
> But yes, I don't think we have anything for writing and I it is
> probably not trivial to extend it. We can probably add the existing
> write functions to Endian.h itself.
>
> What is lld using? If we are moving these functions from clang to llvm
> it would be really nice to use them in lld too.
>
>
>> We could still add this stuff to Endian.h, assuming it isn't an issue to
>> depend on raw_ostream.h from Endian.h. I'm not sure if that'd be a
>> problem or not.
>
> Cheers,
> Rafael

packed_endian_specific_integral supports writing.

- Michael Spencer




More information about the llvm-dev mailing list