aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorVladimir Makarov <vmakarov@redhat.com>2008-10-16 00:52:59 +0000
committerVladimir Makarov <vmakarov@gcc.gnu.org>2008-10-16 00:52:59 +0000
commitaac375ddfb69c8c4c62f9b8a19a2971bcd7d1b7b (patch)
tree46930f5d2d2fa9992f97afd3e7f9588e6fafc03f /gcc
parent22c02455bf65c6cec3bf1d7a69439de949fdc76e (diff)
downloadgcc-aac375ddfb69c8c4c62f9b8a19a2971bcd7d1b7b.zip
gcc-aac375ddfb69c8c4c62f9b8a19a2971bcd7d1b7b.tar.gz
gcc-aac375ddfb69c8c4c62f9b8a19a2971bcd7d1b7b.tar.bz2
re PR target/37633 (wrong register use on sh64)
2008-10-14 Vladimir Makarov <vmakarov@redhat.com> PR target/37633 * ira-costs.c (ira_tune_allocno_costs_and_cover_classes): Check HARD_REGNO_CALL_PART_CLOBBERED. From-SVN: r141161
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/ira-costs.c4
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 68ae6ec..ccdc92e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2008-10-14 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR target/37633
+ * ira-costs.c (ira_tune_allocno_costs_and_cover_classes): Check
+ HARD_REGNO_CALL_PART_CLOBBERED.
+
2008-10-15 Vladimir Makarov <vmakarov@redhat.com>
PR middle-end/37535
diff --git a/gcc/ira-costs.c b/gcc/ira-costs.c
index 7749020..64b2e79 100644
--- a/gcc/ira-costs.c
+++ b/gcc/ira-costs.c
@@ -1572,8 +1572,8 @@ ira_tune_allocno_costs_and_cover_classes (void)
regno = ira_class_hard_regs[cover_class][j];
rclass = REGNO_REG_CLASS (regno);
cost = 0;
- /* ??? If only part is call clobbered. */
- if (! ira_hard_reg_not_in_set_p (regno, mode, call_used_reg_set))
+ if (! ira_hard_reg_not_in_set_p (regno, mode, call_used_reg_set)
+ || HARD_REGNO_CALL_PART_CLOBBERED (regno, mode))
cost += (ALLOCNO_CALL_FREQ (a)
* (ira_memory_move_cost[mode][rclass][0]
+ ira_memory_move_cost[mode][rclass][1]));