https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69306
--- Comment #4 from Zdenek Sojka <zsojka at seznam dot cz> --- (In reply to Zdenek Sojka from comment #3) > (In reply to H.J. Lu from comment #1) > > typedef unsigned long int uint64_t; > > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ It should be long long. > > Sorry, you are right, originally it was __UINT64_TYPE__, but the macro got > expanded. > Strange the testcase works at other 32bit architectures. ... on 32bit architectures, the following is undefined: *p64_2 >>= *p64_1 & 63; so, yes, sorry for that.