http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57214
--- Comment #5 from Marek Polacek <mpolacek at gcc dot gnu.org> --- Reduced: extern int baz (void); extern int foo (void) __attribute__ ((returns_twice)); void bar (_Bool b) { int buf[1]; while (1) { _Bool x = 1; if (b) baz (); b = 1; baz (); x = 0; int i; while (buf[i] && i) i++; foo (); if (!x) b = 0; } }