On Wed, Mar 16, 2011 at 10:09:44AM -0700, H.J. Lu wrote: > Hi, > > expand_function_start failed to properly store frame pointer for > non-local goto when Pmode != ptr_mode. OK for trunk? Wrong patch. Here is the correct mode. OK for trunk?
Thanks. H.J. --- diff --git a/gcc/ChangeLog.x32 b/gcc/ChangeLog.x32 index 3405300..52ff01d 100644 --- a/gcc/ChangeLog.x32 +++ b/gcc/ChangeLog.x32 @@ -1,3 +1,9 @@ +2011-03-16 H.J. Lu <hongjiu...@intel.com> + + PR middle-end/48016 + * function.c (expand_function_start): Properly store frame + pointer for non-local goto. + 2011-03-12 H.J. Lu <hongjiu...@intel.com> PR target/48084 diff --git a/gcc/function.c b/gcc/function.c index 1f7722c..ac6b267 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -4762,7 +4762,7 @@ expand_function_start (tree subr) cfun->nonlocal_goto_save_area, integer_zero_node, NULL_TREE, NULL_TREE); r_save = expand_expr (t_save, NULL_RTX, VOIDmode, EXPAND_WRITE); - r_save = convert_memory_address (Pmode, r_save); + r_save = adjust_address (r_save, Pmode, 0); emit_move_insn (r_save, targetm.builtin_setjmp_frame_value ()); update_nonlocal_goto_save_area ();