aboutsummaryrefslogtreecommitdiff
path: root/gcc/reload1.c
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1998-05-26 15:24:58 -0600
committerJeff Law <law@gcc.gnu.org>1998-05-26 15:24:58 -0600
commita07c9e2b459a19d618ee49e0a72d7b682b1ffbc7 (patch)
tree045975f692546a387945c41503575175b08527f9 /gcc/reload1.c
parenta8f3f283e03813795fb8467e488c93045c8fcbca (diff)
downloadgcc-a07c9e2b459a19d618ee49e0a72d7b682b1ffbc7.zip
gcc-a07c9e2b459a19d618ee49e0a72d7b682b1ffbc7.tar.gz
gcc-a07c9e2b459a19d618ee49e0a72d7b682b1ffbc7.tar.bz2
char *version_string = "egcs-2.91.33 19980526 (gcc2 ss-980502 experimental)";
From-SVN: r20068
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r--gcc/reload1.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c
index e0602be..14c2398 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -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: