http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57349
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- Reduced testcase, fails with -O -fbranch-probabilities struct __jmp_buf_tag { }; typedef struct __jmp_buf_tag jmp_buf[1]; typedef struct cop COP; typedef struct gv GV; struct cop { GV * cop_filegv; }; struct jmpenv { jmp_buf je_buf; int je_ret; }; typedef struct jmpenv JMPENV; extern char * PL_origfilename; extern COP * volatile PL_curcop ; static void open_script() { PL_curcop->cop_filegv = Perl_gv_fetchfile(PL_origfilename); } int perl_parse(char **argv) { char *scriptname = ((void *)0); char *validarg = ""; JMPENV cur_env; int fdscript = -1; cur_env.je_ret = _setjmp (((cur_env.je_buf))); if (!scriptname) scriptname = argv[0]; open_script(); validate_suid(validarg, scriptname,fdscript); }