Hi, in builtins.c:expand_builtin_setjmp_receiver I see the following code: 827 /* Now put in the code to restore the frame pointer, and argument 828 pointer, if needed. */ 829 #ifdef HAVE_nonlocal_goto 830 if (! HAVE_nonlocal_goto) 831 #endif 832 { 833 emit_move_insn (virtual_stack_vars_rtx, hard_frame_pointer_rtx); 834 /* This might change the hard frame pointer in ways that aren't 835 apparent to early optimization passes, so force a clobber. */ 836 emit_clobber (hard_frame_pointer_rtx); 837 }
Shouldn't that code somehow honor STARTING_FRAME_OFFSET ? Or maybe virtual_stack_vars_rtx shouldn't include that offset? The thing is I'm playing with a port these days, and I'm not able to make all the testsuite pass when STARTING_FRAME_OFFSET is not 0. I tracked the failures down to that move instruction that makes following stack vars accesses fail when there's an offset between the frame pointer and the first stack variable. Thanks! Fred