https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80641
--- Comment #1 from Marc Glisse <glisse at gcc dot gnu.org> --- If I (very hackishly) enable A + CST CMP A -> A CMP' CST' without single_use, and (unsigned long)x==0 --> x==0, we simplify quite a bit more and the warning disappears. (and there would still be some margin, where we could simplify _6 = _8 /[ex] 4; _17 = (long unsigned int) _6; sz_13 = _17 + 18446744073709551615; _48 = sz_13 * 4; to tmp = (long unsigned int) _8 _48 = tmp + 18446744073709551612; )