https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99079
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Ah, except we introduce UB into the program because (1 << var) - 1 when var is 31 will be INT_MIN - 1. I think we should do the subtraction of 1 in utype then.