Bug in expand_builtin_setjmp_receiver ?
Frederic Riss
frederic.riss@gmail.com
Tue Oct 19 08:51:00 GMT 2010
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
More information about the Gcc
mailing list