https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51783
--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The problem with the conversion that is suggested here is the addition if changed into a signed type might have an undefined behavior when it comes to an overflow. It does not matter if it is used later with equals, it is undefined at the point of addition. if we change how GCC's gimple IR works where we have a PLUS which has a wrapping behavior or undefined overflow behavior, then this will just simplify to that. There has been some talk about that in the past but it did not get that far the last time it was started.