mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-21 23:00:52 +08:00
Optimize moxie function prologues
From-SVN: r191088
This commit is contained in:
parent
e4d8437d70
commit
55a514601b
@ -1,3 +1,10 @@
|
||||
2012-09-07 Anthony Green <green@moxielogic.com>
|
||||
|
||||
* config/moxie/moxie.c (moxie_expand_prologue): Optimize prologue
|
||||
for functions with large static stack requirements.
|
||||
(moxie_expand_epilogue): Use $r12 instead of $r5 for pulling saved
|
||||
values off of the stack.
|
||||
|
||||
2012-09-07 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* config/v850/v850.h (DBX_DEBUGGING_INFO): Define.
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Target Code for moxie
|
||||
Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation
|
||||
Copyright (C) 2008, 2009, 2010, 2011, 2012 Free Software Foundation
|
||||
Contributed by Anthony Green.
|
||||
|
||||
This file is part of GCC.
|
||||
@ -293,8 +293,8 @@ moxie_expand_prologue (void)
|
||||
|
||||
if (cfun->machine->size_for_adjusting_sp > 0)
|
||||
{
|
||||
int i = cfun->machine->size_for_adjusting_sp;
|
||||
while (i > 255)
|
||||
int i = cfun->machine->size_for_adjusting_sp;
|
||||
while ((i >= 255) && (i <= 510))
|
||||
{
|
||||
insn = emit_insn (gen_subsi3 (stack_pointer_rtx,
|
||||
stack_pointer_rtx,
|
||||
@ -302,13 +302,23 @@ moxie_expand_prologue (void)
|
||||
RTX_FRAME_RELATED_P (insn) = 1;
|
||||
i -= 255;
|
||||
}
|
||||
if (i > 0)
|
||||
if (i <= 255)
|
||||
{
|
||||
insn = emit_insn (gen_subsi3 (stack_pointer_rtx,
|
||||
stack_pointer_rtx,
|
||||
GEN_INT (i)));
|
||||
RTX_FRAME_RELATED_P (insn) = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
rtx reg = gen_rtx_REG (SImode, MOXIE_R12);
|
||||
insn = emit_move_insn (reg, GEN_INT (i));
|
||||
RTX_FRAME_RELATED_P (insn) = 1;
|
||||
insn = emit_insn (gen_subsi3 (stack_pointer_rtx,
|
||||
stack_pointer_rtx,
|
||||
reg));
|
||||
RTX_FRAME_RELATED_P (insn) = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -320,7 +330,7 @@ moxie_expand_epilogue (void)
|
||||
|
||||
if (cfun->machine->callee_saved_reg_size != 0)
|
||||
{
|
||||
reg = gen_rtx_REG (Pmode, MOXIE_R5);
|
||||
reg = gen_rtx_REG (Pmode, MOXIE_R12);
|
||||
if (cfun->machine->callee_saved_reg_size <= 255)
|
||||
{
|
||||
emit_move_insn (reg, hard_frame_pointer_rtx);
|
||||
|
Loading…
x
Reference in New Issue
Block a user