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

Reply via email to