From 5a1c3f40d81274a0410c44b0b506c2988b5f069c Mon Sep 17 00:00:00 2001 From: jason Date: Tue, 12 Sep 2006 18:02:36 +0000 Subject: PR middle-end/28493 * builtins.c (expand_builtin_setjmp_receiver): Clobber hard_frame_pointer_rtx after using it to update the frame pointer. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116900 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/builtins.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'gcc/builtins.c') diff --git a/gcc/builtins.c b/gcc/builtins.c index 5bcba14d7c2..4684a5482ad 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -679,7 +679,12 @@ expand_builtin_setjmp_receiver (rtx receiver_label ATTRIBUTE_UNUSED) #ifdef HAVE_nonlocal_goto if (! HAVE_nonlocal_goto) #endif - emit_move_insn (virtual_stack_vars_rtx, hard_frame_pointer_rtx); + { + emit_move_insn (virtual_stack_vars_rtx, hard_frame_pointer_rtx); + /* This might change the hard frame pointer in ways that aren't + apparent to early optimization passes, so force a clobber. */ + emit_insn (gen_rtx_CLOBBER (VOIDmode, hard_frame_pointer_rtx)); + } #if ARG_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM if (fixed_regs[ARG_POINTER_REGNUM]) -- cgit v1.2.1