Default expansion of builtin_longjmp

2005-05-16 Thread Øyvind Harboe
The default expansion of builtin_longjmp will use nonlocal_goto if it is defined by the backend. Looking at the builtin_longjmp expansion code in builtins.c, I find that it does not match the documentation for 'nonlocal_goto' in GCC internals: "the first argument is to be loaded into the frame poi

Re: Are 'goto' + trampolines broken?

2005-05-14 Thread Øyvind Harboe
On Sat, 2005-05-14 at 12:29 -0700, Richard Henderson wrote: > On Sat, May 14, 2005 at 11:59:28AM +0200, Øyvind Harboe wrote: > > void test(void (*t)(void)) > > { > > int i; > > for (i=0; i<10; i++) > > { > > t(); > ... > > int skip=0xdeadbeef; > > > > void do_goto (void

Are 'goto' + trampolines broken?

2005-05-14 Thread Øyvind Harboe
While strolling through the dark corners of the testsuite, as one does :-), I discovered the gcc.c-torture/execute/nestfunct-5.c testcase. How can goto's out of a nested fn to the containing fn possibly work? Here foo() & bar() have different stack-frames, saved registers, etc. void foo() {