------- Comment #6 from janis at gcc dot gnu dot org 2006-08-08 20:59 ------- A regression hunt on powerpc-linux confirmed that this patch caused the change in behavior:
http://gcc.gnu.org/viewcvs?view=rev&rev=107702 r107702 | bonzini | 2005-11-30 08:20:23 +0000 (Wed, 30 Nov 2005) Here's the test I used: ------------------------ extern void abort (void); int foo (unsigned int u) { return (int)(u + 4) < (int)u; } int main (int argc, char *argv[]) { unsigned int u; /* Run with no arguments so u will be MAX_INT and the optimizers won't know its value. */ if (argc > 1) u = 1; else u = 0x7fffffff; if (foo (u) == 0) abort(); return 0; } ------------------------ -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28651