[AArch64] Classify FRAME_POINTER_REGNUM and ARG_POINTER_REGNUM as POINTER_REGS.
diff mbox

Message ID 525EA6C1.6050103@arm.com
State New
Headers show

Commit Message

Marcus Shawcroft Oct. 16, 2013, 2:46 p.m. UTC
The existing aarch64 implementation of REGNO_REGCLASS classifies the 
soft frame and arg registers as CORE_REGS.  However either could be 
eliminated against FP or SP, in case of the latter CORE_REGS is too 
narrow.  This patch changes the classification to POINTER_REGS a 
superset of CORE_REGS that includes SP.

Regressed aarch64-none-elf, committed.

/Marcus

2013-10-16  Marcus Shawcroft  <marcus.shawcroft@arm.com>

         * config/aarch64/aarch64.c (aarch64_regno_regclass): Classify
         FRAME_POINTER_REGNUM and ARG_POINTER_REGNUM as POINTER_REGS.

Patch
diff mbox

diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index f6f587a..da3962f 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -3904,7 +3904,7 @@  aarch64_regno_regclass (unsigned regno)
 
   if (regno == FRAME_POINTER_REGNUM
       || regno == ARG_POINTER_REGNUM)
-    return CORE_REGS;
+    return POINTER_REGS;
 
   if (FP_REGNUM_P (regno))
     return FP_LO_REGNUM_P (regno) ?  FP_LO_REGS : FP_REGS;