OSDN Git Service

2009-09-03 Vladimir Makarov <vmakarov@redhat.com>
authorvmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 3 Sep 2009 18:33:25 +0000 (18:33 +0000)
committervmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 3 Sep 2009 18:33:25 +0000 (18:33 +0000)
PR bootstrap/41241
* ira.c (update_equiv_reg): Remove check on class likely spill.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151388 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/ira.c

index 0f5face..fc0ff82 100644 (file)
@@ -1,3 +1,8 @@
+2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
+
+       PR bootstrap/41241
+       * ira.c (update_equiv_reg): Remove check on class likely spill.
+
 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
 
        PR debug/41236
index b960f76..b9b10dc 100644 (file)
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -2384,21 +2384,9 @@ update_equiv_regs (void)
 
          /* We only handle the case of a pseudo register being set
             once, or always to the same value.  */
-         /* ??? The mn10200 port breaks if we add equivalences for
-            values that need an ADDRESS_REGS register and set them equivalent
-            to a MEM of a pseudo.  The actual problem is in the over-conservative
-            handling of INPADDR_ADDRESS / INPUT_ADDRESS / INPUT triples in
-            calculate_needs, but we traditionally work around this problem
-            here by rejecting equivalences when the destination is in a register
-            that's likely spilled.  This is fragile, of course, since the
-            preferred class of a pseudo depends on all instructions that set
-            or use it.  */
-
          if (!REG_P (dest)
              || (regno = REGNO (dest)) < FIRST_PSEUDO_REGISTER
-             || reg_equiv[regno].init_insns == const0_rtx
-             || (CLASS_LIKELY_SPILLED_P (reg_preferred_class (regno))
-                 && MEM_P (src) && ! reg_equiv[regno].is_arg_equivalence))
+             || reg_equiv[regno].init_insns == const0_rtx)
            {
              /* This might be setting a SUBREG of a pseudo, a pseudo that is
                 also set somewhere else to a constant.  */