ping
From: Wilco Dijkstra Sent: 07 August 2017 15:13 To: GCC Patches; James Greenhalgh Cc: nd; Richard Earnshaw Subject: [PATCH][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. ChangeLog: 2017-08-07 Wilco Dijkstra <wdijk...@arm.com> gcc/ * config/aarch64/aarch64.c (aarch64_can_eliminate): Simplify logic. -- diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 9463edf63ffe770062b4120fada090e20c93a269..fbb4244cb58d2a25203aa27342c2f7988c30bd98 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -5858,26 +5858,12 @@ aarch64_secondary_reload (bool in_p ATTRIBUTE_UNUSED, rtx x, } 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 - 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 (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 to == HARD_FRAME_POINTER_REGNUM; return true; }