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.