https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98731
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target|s390x-linux-gnu |s390x-linux-gnu, | |powerpc-*-*, powerpc64-*-* Keywords| |ABI --- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Matthias Klose from comment #0) > It appears that the hash value is completely dependent on the size of > the object in bytes. It's not *completely* dependent on the size. Only the last x.size()%64 bits are hashed incorrectly. For x.size() < 32 it's completely dependent, because we never look at the right bits. For larger numbers of bits we look at *some* of them. Fixing it is an ABI break though, because it would mean that the same value produces a different hash when compiled with an old GCC or a fixed GCC. Inserting an element into an unordered_map in one TU and then looking it up in another TU could fail.