diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2008-10-16 00:52:59 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@gcc.gnu.org> | 2008-10-16 00:52:59 +0000 |
commit | aac375ddfb69c8c4c62f9b8a19a2971bcd7d1b7b (patch) | |
tree | 46930f5d2d2fa9992f97afd3e7f9588e6fafc03f /gcc | |
parent | 22c02455bf65c6cec3bf1d7a69439de949fdc76e (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ira-costs.c | 4 |
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])); |