(expand_function_start): Delay copying static chain.
From-SVN: r6979
This commit is contained in:
parent
8b0f91011f
commit
f0c51a1e34
@ -4860,7 +4860,13 @@ expand_function_start (subr, parms_have_cleanups)
|
|||||||
if (current_function_needs_context)
|
if (current_function_needs_context)
|
||||||
{
|
{
|
||||||
last_ptr = assign_stack_local (Pmode, GET_MODE_SIZE (Pmode), 0);
|
last_ptr = assign_stack_local (Pmode, GET_MODE_SIZE (Pmode), 0);
|
||||||
emit_move_insn (last_ptr, static_chain_incoming_rtx);
|
|
||||||
|
#ifdef SMALL_REGISTER_CLASSES
|
||||||
|
/* Delay copying static chain if it is not a register to avoid
|
||||||
|
conflicts with regs used for parameters. */
|
||||||
|
if (GET_CODE (static_chain_incoming_rtx) == REG)
|
||||||
|
#endif
|
||||||
|
emit_move_insn (last_ptr, static_chain_incoming_rtx);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If the parameters of this function need cleaning up, get a label
|
/* If the parameters of this function need cleaning up, get a label
|
||||||
@ -4976,6 +4982,15 @@ expand_function_start (subr, parms_have_cleanups)
|
|||||||
|
|
||||||
assign_parms (subr, 0);
|
assign_parms (subr, 0);
|
||||||
|
|
||||||
|
#ifdef SMALL_REGISTER_CLASSES
|
||||||
|
/* Copy the static chain now if it wasn't a register. The delay is to
|
||||||
|
avoid conflicts with the parameter passing registers. */
|
||||||
|
|
||||||
|
if (current_function_needs_context)
|
||||||
|
if (GET_CODE (static_chain_incoming_rtx) != REG)
|
||||||
|
emit_move_insn (last_ptr, static_chain_incoming_rtx);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* The following was moved from init_function_start.
|
/* The following was moved from init_function_start.
|
||||||
The move is supposed to make sdb output more accurate. */
|
The move is supposed to make sdb output more accurate. */
|
||||||
/* Indicate the beginning of the function body,
|
/* Indicate the beginning of the function body,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user