http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56250
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> 2013-02-08 01:51:39 UTC --- When I do this: unsigned x = 2; unsigned t = (x/2); unsigned t1 = -t; unsigned t2 = t2/2; t2 is 0 which is correct. I don't see why 2147483647 is correct.