------- Comment #25 from hjl dot tools at gmail dot com 2009-01-20 15:08 ------- (In reply to comment #24) > Subject: Re: [4.4 Regression] psim miscompiled #2 > > On Tue, 20 Jan 2009, hjl dot tools at gmail dot com wrote: > > > ------- 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 (). > > Still I don't think this is an IRA bug. Either this code is sort-of > non-conforming or we need to throttle down inlining more. >
Since -fno-ira works, I think it may be fixed in IRA if we can properly mark stack slots used to restore registers after setjmp. FWIW, bar () is marked as inline in sim. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38587