]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/37633 (wrong register use on sh64)
authorVladimir Makarov <vmakarov@redhat.com>
Thu, 16 Oct 2008 00:52:59 +0000 (00:52 +0000)
committerVladimir Makarov <vmakarov@gcc.gnu.org>
Thu, 16 Oct 2008 00:52:59 +0000 (00:52 +0000)
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

gcc/ChangeLog
gcc/ira-costs.c

index 68ae6eca9d6dfe23564a48d1b49cee1882fec325..ccdc92ed986748a96a34939419f058e2226ef915 100644 (file)
@@ -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
index 774902035e1f1047f2e6cad5d4b33613b27747c8..64b2e7995d661935147340646c289f8c2fd79109 100644 (file)
@@ -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]));