https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89977
--- Comment #2 from JunMa <JunMa at linux dot alibaba.com> --- After a bit more thinking, the behavior of gcc trunk is right. the range of n_3 in truncation from int128 to long unsigned int equal to the range of long unsigned int. for example: if n_3 = 0x100000000, then _1 is 0 which is less than 7. so this is not a bug.