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.

Reply via email to