Commit e296c00c by David Ung Committed by David Ung

mips.c (mips_expand_prologue): Handle case when generating for MIPS16 and the…

mips.c (mips_expand_prologue): Handle case when generating for MIPS16 and the outgoing argument area is more...

* config/mips/mips.c (mips_expand_prologue): Handle case when
generating for MIPS16 and the outgoing argument area is more than
SMALL_OPERAND. Use the frame pointer as temporary to generate the
add instruction.

From-SVN: r103519
parent 55d61dba
2005-08-26 David Ung <davidu@mips.com>
* config/mips/mips.c (mips_expand_prologue): Handle case when
generating for MIPS16 and the outgoing argument area is more than
SMALL_OPERAND. Use the frame pointer as temporary to generate the
add instruction.
2005-08-26 Paul Woegerer <paul.woegerer@nsc.com>
* config/crx/crx.md: Make doloop_end pattern usage controllable
......
......@@ -6736,10 +6736,23 @@ mips_expand_prologue (void)
if (TARGET_MIPS16 && cfun->machine->frame.args_size != 0)
{
rtx offset = GEN_INT (cfun->machine->frame.args_size);
if (SMALL_OPERAND (cfun->machine->frame.args_size))
RTX_FRAME_RELATED_P
(emit_insn (gen_add3_insn (hard_frame_pointer_rtx,
stack_pointer_rtx,
offset))) = 1;
else
{
emit_move_insn (MIPS_PROLOGUE_TEMP (Pmode), offset);
emit_move_insn (hard_frame_pointer_rtx, stack_pointer_rtx);
emit_insn (gen_add3_insn (hard_frame_pointer_rtx,
hard_frame_pointer_rtx,
MIPS_PROLOGUE_TEMP (Pmode)));
mips_set_frame_expr
(gen_rtx_SET (VOIDmode, hard_frame_pointer_rtx,
plus_constant (stack_pointer_rtx,
cfun->machine->frame.args_size)));
}
}
else
RTX_FRAME_RELATED_P (emit_move_insn (hard_frame_pointer_rtx,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment