http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58069
--- Comment #3 from Marek Polacek <mpolacek at gcc dot gnu.org> --- Slightly reduced int b, c; static *d = &c; void foo (void) { int f, i, j, *g; int h[] = { 0, 0, 0, 1, 0, 0, 0, 0, 1 }; for (i = 0; i < 1; i++) { int *k = &b; if (*g) fn3 (); else { *k = 0; fn4 (); } *g = *k; for (j = 8; j; j--) { for (f = 0; f <= 8; f++) *d |= h[f] && *k; int *o = &h[0]; *o = *k; } } }