Hi, > I'm looking at a missed optimizations in combine and it is similar to the one > you've fixed in PR18942 > (http://thread.gmane.org/gmane.comp.gcc.patches/81504). > > I'm trying to make GCC optimize > (leu:SI > (plus:SI (reg:SI) (const_int -1)) > (const_int 1)) > > into > > (leu:SI > (reg:SI) > (const_int 2)) > > Your patch for PR18942 handles only EQ/NE comparisons, and I wonder if there > is a reason not to handle LEU/GEU, LTU/GTU comparisons as well. I'm a bit > fuzzy whether signed comparisons can be optimized here as well, but I can't > see the problem with unsigned comparisons. > > Any reason why this optimization would be unsafe?
the reason I handled only EQ/NE patterns is that you do not need to worry about overflows there. For ordering predicates, x - 1 <= 1 is not equivalent to x <= 2 if x = 0 (the former becomes MAX_UNSIGNED_INT <= 1, which is false), Zdenek