http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57036
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> 2013-04-23 11:06:50 UTC --- Reduced testcase: extern void g (void); extern __inline __attribute__ ((__always_inline__,__leaf__)) f () { g (); } struct __jmp_buf_tag *b; int jpgDecode_convert (unsigned i) { if (i != 0) f (); read_buf_open (); return _setjmp (b); } marking 'g' leaf as well fixes the ICE. The inliner doesn't handle new abnormal edges appearing this way from a 'leaf' function which isn't considered as possibly causing abnormal goto edges. I suppose all these setjmp ICEs are latent with carefully constructed non-local goto testcases.