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

Rafael EspĂ­ndola rafael.espindola at gmail.com
Sat Mar 22 20:45:55 PDT 2014


> 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



More information about the llvm-dev mailing list