Commit 8ee6eb4e by Paul Brook Committed by Paul Brook

* config/arm/arm.c (emit_sfm): Only emit a single frame adjustment.

From-SVN: r85480
parent 7a1f75f1
2004-08-03 Paul Brook <paul@codesourcery.com>
* config/arm/arm.c (emit_sfm): Only emit a single frame adjustment.
2004-08-03 Jan Hubicka <jh@suse.cz> 2004-08-03 Jan Hubicka <jh@suse.cz>
* coverage.c (tree_coverage_counter_ref): Fix computation of the new * coverage.c (tree_coverage_counter_ref): Fix computation of the new
......
...@@ -9911,7 +9911,7 @@ emit_sfm (int base_reg, int count) ...@@ -9911,7 +9911,7 @@ emit_sfm (int base_reg, int count)
int i; int i;
par = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (count)); par = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (count));
dwarf = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (count)); dwarf = gen_rtx_SEQUENCE (VOIDmode, rtvec_alloc (count + 1));
reg = gen_rtx_REG (XFmode, base_reg++); reg = gen_rtx_REG (XFmode, base_reg++);
...@@ -9922,13 +9922,10 @@ emit_sfm (int base_reg, int count) ...@@ -9922,13 +9922,10 @@ emit_sfm (int base_reg, int count)
gen_rtx_UNSPEC (BLKmode, gen_rtx_UNSPEC (BLKmode,
gen_rtvec (1, reg), gen_rtvec (1, reg),
UNSPEC_PUSH_MULT)); UNSPEC_PUSH_MULT));
tmp tmp = gen_rtx_SET (VOIDmode,
= gen_rtx_SET (VOIDmode, gen_rtx_MEM (XFmode, stack_pointer_rtx), reg);
gen_rtx_MEM (XFmode,
gen_rtx_PRE_DEC (BLKmode, stack_pointer_rtx)),
reg);
RTX_FRAME_RELATED_P (tmp) = 1; RTX_FRAME_RELATED_P (tmp) = 1;
XVECEXP (dwarf, 0, count - 1) = tmp; XVECEXP (dwarf, 0, 1) = tmp;
for (i = 1; i < count; i++) for (i = 1; i < count; i++)
{ {
...@@ -9937,13 +9934,21 @@ emit_sfm (int base_reg, int count) ...@@ -9937,13 +9934,21 @@ emit_sfm (int base_reg, int count)
tmp = gen_rtx_SET (VOIDmode, tmp = gen_rtx_SET (VOIDmode,
gen_rtx_MEM (XFmode, gen_rtx_MEM (XFmode,
gen_rtx_PRE_DEC (BLKmode, plus_constant (stack_pointer_rtx,
stack_pointer_rtx)), i * 12)),
reg); reg);
RTX_FRAME_RELATED_P (tmp) = 1; RTX_FRAME_RELATED_P (tmp) = 1;
XVECEXP (dwarf, 0, count - i - 1) = tmp; XVECEXP (dwarf, 0, i + 1) = tmp;
} }
tmp = gen_rtx_SET (VOIDmode,
stack_pointer_rtx,
gen_rtx_PLUS (SImode,
stack_pointer_rtx,
GEN_INT (-12 * count)));
RTX_FRAME_RELATED_P (tmp) = 1;
XVECEXP (dwarf, 0, 0) = tmp;
par = emit_insn (par); par = emit_insn (par);
REG_NOTES (par) = gen_rtx_EXPR_LIST (REG_FRAME_RELATED_EXPR, dwarf, REG_NOTES (par) = gen_rtx_EXPR_LIST (REG_FRAME_RELATED_EXPR, dwarf,
REG_NOTES (par)); REG_NOTES (par));
......
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