------- Comment #3 from rguenth at gcc dot gnu dot org 2006-05-14 17:56 ------- We fold (j == 3 || j == 4) to (unsigned)j - 3 <= 1, which VRP considers to be always false.
void exit (int); void abort (void); int a; int main() { int j; for (j = 0; j < 6; j++) { if ((unsigned)j - 3 <= 1) exit (0); a = 1000 * (6 - j); } abort (); } somehow the false information is extracted from the multiplication expression. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27603