------- Comment #23 from hjl dot tools at gmail dot com 2009-01-20 14:24 ------- (In reply to comment #22) > From tree-inline.c: > > case BUILT_IN_LONGJMP: > /* We can't inline functions that call __builtin_longjmp at > all. The non-local goto machinery really requires the > destination be in a different function. If we allow the > function calling __builtin_longjmp to be inlined into the > function calling __builtin_setjmp, Things will Go Awry. */ > > so IMHO we shouldn't inline foo (). See inline_forbidden_p_stmt. >
foo () isn't inlined. We inline bar () which reuses stack slot used to restore registers after longjmp, which is called from foo (). -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38587