http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57287
--- Comment #10 from Richard Biener <rguenth at gcc dot gnu.org> --- #include <setjmp.h> jmp_buf buf; void foo (int); void bar (int) __attribute__((leaf)); void enumerate_locals (int indent) { foo (0); while (indent--) { int local_indent = 8 + (8 * indent); if (local_indent != 8) { setjmp (buf); bar (local_indent); } } foo (1); } warns about uninitialized local_indent. The abnormal edges we insert for foo (0) make undefined values flow into the setjmp block.