From 6216fd904f46a11fa243195ee303560dc802958e Mon Sep 17 00:00:00 2001 From: Wilco Dijkstra Date: Wed, 8 Nov 2017 15:36:34 +0000 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. gcc/ * config/aarch64/aarch64.c (aarch64_can_eliminate): Simplify logic. From-SVN: r254534 --- gcc/ChangeLog | 4 ++++ gcc/config/aarch64/aarch64.c | 22 +++++----------------- 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d39de6b0320..e546a12d09f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2017-11-08 Wilco Dijkstra + + * config/aarch64/aarch64.c (aarch64_can_eliminate): Simplify logic. + 2017-11-08 Wilco Dijkstra * config/aarch64/aarch64.c (aarch64_frame_pointer_required) diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index f58f192273e..0c67e2b5c67 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -5913,26 +5913,14 @@ 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. */ + gcc_assert (from == ARG_POINTER_REGNUM || from == FRAME_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; } -- 2.30.2