From: Jim Wilson Date: Tue, 23 Jun 1992 23:45:23 +0000 (-0700) Subject: *** empty log message *** X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3e2481e9141d2a6da579816c3edba5e64b746824;p=gcc.git *** empty log message *** From-SVN: r1250 --- diff --git a/gcc/function.c b/gcc/function.c index 11070e0acc7..fd69b1823e1 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -3697,8 +3697,10 @@ expand_function_start (subr, parms_have_cleanups) /* If function gets a static chain arg, store it in the stack frame. Do this first, so it gets the first stack slot offset. */ if (current_function_needs_context) - emit_move_insn (assign_stack_local (Pmode, GET_MODE_SIZE (Pmode), 0), - static_chain_incoming_rtx); + { + last_ptr = assign_stack_local (Pmode, GET_MODE_SIZE (Pmode), 0); + emit_move_insn (last_ptr, static_chain_incoming_rtx); + } /* If the parameters of this function need cleaning up, get a label for the beginning of the code which executes those cleanups. This must @@ -3814,7 +3816,10 @@ expand_function_start (subr, parms_have_cleanups) /* Fetch static chain values for containing functions. */ tem = decl_function_context (current_function_decl); - if (tem) + /* If not doing stupid register allocation, then start off with the static + chain pointer in a pseudo register. Otherwise, we use the stack + address that was generated above. */ + if (tem && ! obey_regdecls) last_ptr = copy_to_reg (static_chain_incoming_rtx); context_display = 0; while (tem)