Commit 6216fd90 by Wilco Dijkstra Committed by Wilco Dijkstra

[AArch64] Simplify aarch64_can_eliminate

Simplify aarch64_can_eliminate - if we need a frame pointer, we must
eliminate to HARD_FRAME_POINTER_REGNUM.  Rather than hardcoding all
combinations from the ELIMINABLE_REGS list, just do the correct check.

    gcc/
	* config/aarch64/aarch64.c (aarch64_can_eliminate): Simplify logic.

From-SVN: r254534
parent 7040939b
2017-11-08 Wilco Dijkstra <wdijkstr@arm.com> 2017-11-08 Wilco Dijkstra <wdijkstr@arm.com>
* config/aarch64/aarch64.c (aarch64_can_eliminate): Simplify logic.
2017-11-08 Wilco Dijkstra <wdijkstr@arm.com>
* config/aarch64/aarch64.c (aarch64_frame_pointer_required) * config/aarch64/aarch64.c (aarch64_frame_pointer_required)
Remove. Remove.
(aarch64_layout_frame): Initialise emit_frame_chain. (aarch64_layout_frame): Initialise emit_frame_chain.
...@@ -5913,26 +5913,14 @@ aarch64_secondary_reload (bool in_p ATTRIBUTE_UNUSED, rtx x, ...@@ -5913,26 +5913,14 @@ aarch64_secondary_reload (bool in_p ATTRIBUTE_UNUSED, rtx x,
} }
static bool static bool
aarch64_can_eliminate (const int from, const int to) aarch64_can_eliminate (const int from ATTRIBUTE_UNUSED, const int to)
{ {
/* If we need a frame pointer, we must eliminate FRAME_POINTER_REGNUM into gcc_assert (from == ARG_POINTER_REGNUM || from == FRAME_POINTER_REGNUM);
HARD_FRAME_POINTER_REGNUM and not into STACK_POINTER_REGNUM. */
/* If we need a frame pointer, ARG_POINTER_REGNUM and FRAME_POINTER_REGNUM
can only eliminate to HARD_FRAME_POINTER_REGNUM. */
if (frame_pointer_needed) if (frame_pointer_needed)
{ return to == HARD_FRAME_POINTER_REGNUM;
if (from == ARG_POINTER_REGNUM && to == HARD_FRAME_POINTER_REGNUM)
return true;
if (from == ARG_POINTER_REGNUM && to == STACK_POINTER_REGNUM)
return false;
if (from == FRAME_POINTER_REGNUM && to == STACK_POINTER_REGNUM
&& !cfun->calls_alloca)
return true;
if (from == FRAME_POINTER_REGNUM && to == HARD_FRAME_POINTER_REGNUM)
return true;
return false;
}
return true; return true;
} }
......
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