char *version_string = "egcs-2.91.33 19980526 (gcc2 ss-980502 experimental)";
authorJeff Law <law@gcc.gnu.org>
Tue, 26 May 1998 21:24:58 +0000 (15:24 -0600)
committerJeff Law <law@gcc.gnu.org>
Tue, 26 May 1998 21:24:58 +0000 (15:24 -0600)
From-SVN: r20068

gcc/reload1.c

index e0602bed2aee0c1c68655532df4bfc170c94151e..14c2398db774fe19600a13580dc1e89fc9baf4c5 100644 (file)
@@ -4726,15 +4726,19 @@ reload_reg_free_before_p (regno, opnum, type)
       return ! TEST_HARD_REG_BIT (reload_reg_used_in_other_addr, regno);
 
     case RELOAD_FOR_INPUT:
-      /* The only things earlier are the address for this and
-        earlier inputs, other inputs (which we know we don't conflict
-        with), and addresses of RELOAD_OTHER objects.  */
+      /* The only things earlier are the address for this and earlier inputs,
+        earlier inputs, and addresses of RELOAD_OTHER objects.  */
 
-      for (i = 0; i <= opnum; i++)
+      for (i = 0; i < opnum; i++)
        if (TEST_HARD_REG_BIT (reload_reg_used_in_input_addr[i], regno)
-           || TEST_HARD_REG_BIT (reload_reg_used_in_inpaddr_addr[i], regno))
+           || TEST_HARD_REG_BIT (reload_reg_used_in_inpaddr_addr[i], regno)
+           || TEST_HARD_REG_BIT (reload_reg_used_in_input[i], regno))
          return 0;
 
+      if (TEST_HARD_REG_BIT (reload_reg_used_in_input_addr[opnum], regno)
+         || TEST_HARD_REG_BIT (reload_reg_used_in_inpaddr_addr[opnum], regno))
+       return 0;
+
       return ! TEST_HARD_REG_BIT (reload_reg_used_in_other_addr, regno);
 
     case RELOAD_FOR_INPUT_ADDRESS: