https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101684
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |INVALID
Status|UNCONFIRMED |RESOLVED
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
You are violating C/C++ aliasing rules.
You access value as a uint32_t when you stored to it as a
DecimalV2Value/__int_128_t .
Use either -fno-strict-aliasing or use memcpy inside murmur_hash3_32 to do the
read via uint32_t.
So something like:
const uint8_t* blocks = (const uint8_t*)(data + nblocks * 4);
for (int i = -nblocks; i; i++) {
uint32_t k1;
memcpy (&k1, blocks + i*sizeof(k1), k1);