reload.1c (delete_address_reloads_1): Check for reloads of CURRENT_INSN even if it...
authorJ"orn Rennecke <amylaar@cygnus.co.uk>
Thu, 11 Mar 1999 12:44:27 +0000 (12:44 +0000)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Thu, 11 Mar 1999 12:44:27 +0000 (12:44 +0000)
* reload.1c (delete_address_reloads_1):  Check for reloads of
CURRENT_INSN even if it sets DST.

From-SVN: r25701

gcc/ChangeLog
gcc/reload1.c

index 4e45036..1b1aa77 100644 (file)
@@ -1,3 +1,8 @@
+Thu Mar 11 20:37:59 1999  J"orn Rennecke <amylaar@cygnus.co.uk>
+
+       * reload.1c (delete_address_reloads_1):  Check for reloads of
+       CURRENT_INSN even if it sets DST.
+
 Thu Mar 11 10:29:50 1999  Jason Merrill  <jason@yorick.cygnus.com>
 
        * dwarf2out.c (add_AT_lbl_offset): Rename from add_AT_section_offset.
index 9109614..9d13325 100644 (file)
@@ -8135,10 +8135,9 @@ delete_address_reloads_1 (dead_insn, x, current_insn)
            }
          if (GET_CODE (i2) == JUMP_INSN)
            break;
-         if (reg_set_p (dst, PATTERN (i2)))
-           break;
          /* If DST is still live at CURRENT_INSN, check if it is used for
-            any reload.  */
+            any reload.  Note that even if CURRENT_INSN sets DST, we still
+            have to check the reloads.  */
          if (i2 == current_insn)
            {
              for (j = n_reloads - 1; j >= 0; j--)
@@ -8151,6 +8150,8 @@ delete_address_reloads_1 (dead_insn, x, current_insn)
                 spill_hard_reg.  There is no easy way to tell this, so we
                 have to scan till the end of the basic block.  */
            }
+         if (reg_set_p (dst, PATTERN (i2)))
+           break;
        }
     }
   delete_address_reloads_1 (prev, SET_SRC (set), current_insn);