https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110067

--- Comment #4 from Hongtao.liu <crazylht at gmail dot com> ---
For 
    br64 = br;
    br64 = ((br64 << 16) & 0x000000ff00000000ull) | (br64 & 0x0000ff00ull);

n->n is  0x3000000200.
n->range is 32.
n->type is uint64.

Currently the code assumes n->range is same as TYPE PRECISION(n->type), and
tries to rotate the mask with below code and get new mask as 0x20300 which is
incorrect. 
tmp_n = tmp_n >> count | tmp_n << (range - count)

Reply via email to