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);

Reply via email to