https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55157
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |missed-optimization Status|UNCONFIRMED |NEW Last reconfirmed| |2016-07-10 Summary|Missing VRP |Missed VRP with != 0 and | |multiply Ever confirmed|0 |1 --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The problem here is that VRP asserts !=0 after the branch (which is correct) but it should be able to assert >= 16 if it looked back to see the definition was created by a (unsigned) multiply (of power of two only due to wrapping around) or a shift.