https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108365
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- It is UB on ilp32, but for lp64 it should be well defined. Started with r9-1730-g9e392989053729d4d50 Slightly adjusted so that it is valid even on ilp32: char b = 1; int main () { while ((short) ((long long) (unsigned long long) (-__INT_MAX__ - 1) / (long long) (b ? -1 : 0))) ; }