Commit 7333171f by Ulrich Weigand Committed by Ulrich Weigand

s390.c (s390_emit_prologue): Simplify accesses to FPR slots in the save area.

	* config/s390/s390.c (s390_emit_prologue): Simplify accesses to
	FPR slots in the save area.
	(s390_emit_epilogue): Likewise.

From-SVN: r71799
parent 775ee48e
2003-09-25 Ulrich Weigand <uweigand@de.ibm.com>
* config/s390/s390.c (s390_emit_prologue): Simplify accesses to
FPR slots in the save area.
(s390_emit_epilogue): Likewise.
2003-09-25 Richard Sandiford <rsandifo@redhat.com> 2003-09-25 Richard Sandiford <rsandifo@redhat.com>
* cgraph.h (cgraph_remove_edge): Declare. * cgraph.h (cgraph_remove_edge): Declare.
......
...@@ -5493,37 +5493,18 @@ s390_emit_prologue (void) ...@@ -5493,37 +5493,18 @@ s390_emit_prologue (void)
/* Save fprs for variable args. */ /* Save fprs for variable args. */
if (current_function_stdarg) if (current_function_stdarg)
{ for (i = 16; i < (TARGET_64BIT ? 20 : 18); i++)
/* Save fpr 0 and 2. */ save_fpr (stack_pointer_rtx, 16*UNITS_PER_WORD + 8*(i-16), i);
save_fpr (stack_pointer_rtx, STACK_POINTER_OFFSET - 32, 16);
save_fpr (stack_pointer_rtx, STACK_POINTER_OFFSET - 24, 17);
if (TARGET_64BIT)
{
/* Save fpr 4 and 6. */
save_fpr (stack_pointer_rtx, STACK_POINTER_OFFSET - 16, 18);
save_fpr (stack_pointer_rtx, STACK_POINTER_OFFSET - 8, 19);
}
}
/* Save fprs 4 and 6 if used (31 bit ABI). */ /* Save fprs 4 and 6 if used (31 bit ABI). */
if (!TARGET_64BIT) if (!TARGET_64BIT)
for (i = 18; i < 20; i++)
if (regs_ever_live[i] && !global_regs[i])
{ {
/* Save fpr 4 and 6. */ insn = save_fpr (stack_pointer_rtx, 16*UNITS_PER_WORD + 8*(i-16), i);
if (regs_ever_live[18] && !global_regs[18])
{
insn = save_fpr (stack_pointer_rtx, STACK_POINTER_OFFSET - 16, 18);
RTX_FRAME_RELATED_P (insn) = 1;
}
if (regs_ever_live[19] && !global_regs[19])
{
insn = save_fpr (stack_pointer_rtx, STACK_POINTER_OFFSET - 8, 19);
RTX_FRAME_RELATED_P (insn) = 1; RTX_FRAME_RELATED_P (insn) = 1;
} }
}
/* Decrement stack pointer. */ /* Decrement stack pointer. */
...@@ -5650,6 +5631,7 @@ s390_emit_epilogue (void) ...@@ -5650,6 +5631,7 @@ s390_emit_epilogue (void)
rtx frame_pointer, return_reg; rtx frame_pointer, return_reg;
int area_bottom, area_top, offset = 0; int area_bottom, area_top, offset = 0;
rtvec p; rtvec p;
int i;
if (TARGET_TPF) if (TARGET_TPF)
{ {
...@@ -5705,19 +5687,13 @@ s390_emit_epilogue (void) ...@@ -5705,19 +5687,13 @@ s390_emit_epilogue (void)
} }
else else
{ {
if (regs_ever_live[18] && !global_regs[18]) for (i = 18; i < 20; i++)
{ if (regs_ever_live[i] && !global_regs[i])
if (area_bottom > STACK_POINTER_OFFSET - 16)
area_bottom = STACK_POINTER_OFFSET - 16;
if (area_top < STACK_POINTER_OFFSET - 8)
area_top = STACK_POINTER_OFFSET - 8;
}
if (regs_ever_live[19] && !global_regs[19])
{ {
if (area_bottom > STACK_POINTER_OFFSET - 8) if (area_bottom > 16*UNITS_PER_WORD + 8*(i-16))
area_bottom = STACK_POINTER_OFFSET - 8; area_bottom = 16*UNITS_PER_WORD + 8*(i-16);
if (area_top < STACK_POINTER_OFFSET) if (area_top < 16*UNITS_PER_WORD + 8*(i-16) + 8)
area_top = STACK_POINTER_OFFSET; area_top = 16*UNITS_PER_WORD + 8*(i-16) + 8;
} }
} }
...@@ -5760,8 +5736,6 @@ s390_emit_epilogue (void) ...@@ -5760,8 +5736,6 @@ s390_emit_epilogue (void)
if (TARGET_64BIT) if (TARGET_64BIT)
{ {
int i;
if (cfun->machine->save_fprs_p) if (cfun->machine->save_fprs_p)
for (i = 24; i < 32; i++) for (i = 24; i < 32; i++)
if (regs_ever_live[i] && !global_regs[i]) if (regs_ever_live[i] && !global_regs[i])
...@@ -5770,10 +5744,10 @@ s390_emit_epilogue (void) ...@@ -5770,10 +5744,10 @@ s390_emit_epilogue (void)
} }
else else
{ {
if (regs_ever_live[18] && !global_regs[18]) for (i = 18; i < 20; i++)
restore_fpr (frame_pointer, offset + STACK_POINTER_OFFSET - 16, 18); if (regs_ever_live[i] && !global_regs[i])
if (regs_ever_live[19] && !global_regs[19]) restore_fpr (frame_pointer,
restore_fpr (frame_pointer, offset + STACK_POINTER_OFFSET - 8, 19); offset + 16*UNITS_PER_WORD + 8*(i-16), i);
} }
/* Return register. */ /* Return register. */
......
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