------- Comment #1 from amodra at bigpond dot net dot au 2006-02-13 23:53 ------- f1 in the following is optimized to f2
int f1 (unsigned long offset) { return offset < 0x100 && offset + 4 < 0x100; } int f2 (unsigned long offset) { return offset < 0xfc; } but f3 isn't seen as equivalent to f4 int f3 (unsigned long offset) { unsigned long extra = 4; return offset < 0x100 && offset + extra < 0x100; } int f4 (unsigned long offset) { unsigned long extra = 4; return offset < 0x100 - extra; } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26270