[LLVMdev] ADT/Hashing.h on 32-bit platforms

Stephan Tolksdorf
Sat, 01 Feb 2014 16:35:56 -0000

Hi,

Currently the hashing implementation in ADT/Hashing.h produces hash
values on 32-bit platforms that differ from the lower 32-bits of the
hash values produced on 64-bit platforms. It seems the only reason for
this difference is that the uint64_t integer seed is truncated to
size_t. Since the usage of uint64_t and size_t as types for seed values
in the implementation is somewhat inconsistent, I'm wondering: Was this
difference deliberately introduced as a performance optimization for
32-bit code, or is this maybe just an implementation artifact?

I also noted that the implementation relies on implicit conversions from
uint64_t to size_t in several places where hash_code values are
returned, which may trigger compiler warnings on 32-bit platforms.

- Stephan