https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64130
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |missed-optimization Status|UNCONFIRMED |NEW Last reconfirmed| |2014-12-01 Ever confirmed|0 |1 --- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Andi Kleen from comment #3) > You're right. I actually meant > > x >= maxval(typeof(a)), x / a cannot be 0. > > Corrected test case (assuming 64bit target): > > #include <limits.h> > > int fsigned(int a) > { > return 0x1fffffffL / a == 0; > } 0x1fffffffL / 0x20000000 == 0 Maybe you meant 0x1fffffffffffffffL / a == 0? > int funsigned(unsigned a) > { > return 0x1fffffffL / a == 0; > } > > >So this should be optimized to a > 100 instead. > > Yes this would make sense too. Yes.