aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorWilco Dijkstra <wdijkstr@arm.com>2014-09-12 09:39:42 +0000
committerJiong Wang <jiwang@gcc.gnu.org>2014-09-12 09:39:42 +0000
commit3be0766211a509edfca09bb402706094c22e0921 (patch)
tree7c5b27020495852cdcff6f1aa90e11f16800121f /gcc
parente533e26c0afe3a117418acc65ccaae536f59f105 (diff)
downloadgcc-3be0766211a509edfca09bb402706094c22e0921.zip
gcc-3be0766211a509edfca09bb402706094c22e0921.tar.gz
gcc-3be0766211a509edfca09bb402706094c22e0921.tar.bz2
[AArch64] Add cost handling of CALLER_SAVE_REGS and POINTER_REGS
2014-09-12 Wilco Dijkstra <wdijkstr@arm.com> * gcc/config/aarch64/aarch64.c (aarch64_register_move_cost): Add cost handling of CALLER_SAVE_REGS and POINTER_REGS. From-SVN: r215206
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/aarch64/aarch64.c7
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4d43c39..37202e8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2014-09-12 Wilco Dijkstra <wilco.dijkstra@arm.com>
+ * config/aarch64/aarch64.c (aarch64_register_move_cost): Add cost
+ handling of CALLER_SAVE_REGS and POINTER_REGS.
+
+2014-09-12 Wilco Dijkstra <wilco.dijkstra@arm.com>
+
* gcc/ree.c (combine_reaching_defs): Ensure inserted copy don't change
the number of hard registers.
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index 6bb10db..6f21fd9 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -5932,6 +5932,13 @@ aarch64_register_move_cost (enum machine_mode mode,
const struct cpu_regmove_cost *regmove_cost
= aarch64_tune_params->regmove_cost;
+ /* Caller save and pointer regs are equivalent to GENERAL_REGS. */
+ if (to == CALLER_SAVE_REGS || to == POINTER_REGS)
+ to = GENERAL_REGS;
+
+ if (from == CALLER_SAVE_REGS || from == POINTER_REGS)
+ from = GENERAL_REGS;
+
/* Moving between GPR and stack cost is the same as GP2GP. */
if ((from == GENERAL_REGS && to == STACK_REG)
|| (to == GENERAL_REGS && from == STACK_REG))