https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63748
Ulrich Weigand <uweigand at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |uweigand at gcc dot gnu.org --- Comment #2 from Ulrich Weigand <uweigand at gcc dot gnu.org> --- Much simplified test case: typedef struct __jmp_buf_tag jmp_buf; extern int setjmp (jmp_buf *); jmp_buf *alloc_jmp_buf (); int foo (void *); int test (int op, int noside) { void *argvec = 0; if (op) { jmp_buf *buf = alloc_jmp_buf (); setjmp (buf); if (noside) goto nosideret; do_call_it: if (noside) goto nosideret; return foo (argvec); } argvec = __builtin_alloca (1); goto do_call_it; nosideret: return 1; } results in: xxx.i: In function ‘test’: xxx.i:14:16: error: ‘buf’ may be used uninitialized in this function [-Werror=maybe-uninitialized] jmp_buf *buf = alloc_jmp_buf ();