------- Comment #9 from hp at gcc dot gnu dot org 2009-03-17 05:35 ------- (In reply to comment #8) > Guess it probably won't be TARGET_BUILTIN_SETJMP_FRAME_VALUE then.
At any rate, changing it to hard_frame_pointer_rtx doesn't help by itself. (Resulting diffs in RTL dumps are gone after 132r.unshare, for r144898.) Either, GCC should punt and force p to the stack, or calculate p / keep track of the stack-pointer correctly: the value is off by 20 when used after the longjump. (It should be "move.d [$sp+28],$r10", not $sp+8.) Right, that's the "sp -= 20" due to the __builtin_alloca (20) before the __builtin_setjmp call. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38609