Build this with -Os on ppc32. It doesn't initialise l[256]. int main(void) { int i; unsigned l[288]; /* set up literal table */ for (i = 0; i < 144; i++) l[i] = 8; for (; i < 256; i++) l[i] = 9; for (; i < 280; i++) l[i] = 7; for (; i < 288; i++) l[i] = 8; printf("%d\n", l[256]); if (l[256] != 7) printf("oops.\n"); }
This is a bad bug, old loop.c now plays even with loops it doesn't fully understand and doesn't take into account whether a value is increased in header, body or latch of the loop.
Should be fixed in gcc-4.0.0-0.35.