Commit 55b2829b by Richard Earnshaw Committed by Richard Earnshaw

arm.c (arm_get_frame_offsets): Prefer using r3 for padding a push/pop multiple to 8-byte alignment.

	* arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
	push/pop multiple to 8-byte alignment.

From-SVN: r148072
parent 18d6353c
2009-06-02 Richard Earnshaw <rearnsha@arm.com>
* arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
push/pop multiple to 8-byte alignment.
2009-06-01 Jakub Jelinek <jakub@redhat.com>
* config/i386/i386.c (queued_cfa_restores): New static variable.
......
......@@ -12822,22 +12822,23 @@ arm_get_frame_offsets (void)
{
int reg = -1;
for (i = 4; i <= (TARGET_THUMB1 ? LAST_LO_REGNUM : 11); i++)
/* If it is safe to use r3, then do so. This sometimes
generates better code on Thumb-2 by avoiding the need to
use 32-bit push/pop instructions. */
if (!crtl->tail_call_emit
&& arm_size_return_regs () <= 12)
{
if ((offsets->saved_regs_mask & (1 << i)) == 0)
{
reg = i;
break;
}
}
if (reg == -1 && arm_size_return_regs () <= 12
&& !crtl->tail_call_emit)
{
/* Push/pop an argument register (r3) if all callee saved
registers are already being pushed. */
reg = 3;
}
else
for (i = 4; i <= (TARGET_THUMB1 ? LAST_LO_REGNUM : 11); i++)
{
if ((offsets->saved_regs_mask & (1 << i)) == 0)
{
reg = i;
break;
}
}
if (reg != -1)
{
......
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