aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorGeoff Keating <geoffk@cygnus.com>2000-10-23 18:45:15 +0000
committerGeoffrey Keating <geoffk@gcc.gnu.org>2000-10-23 18:45:15 +0000
commit2af88768a87bab5f3234ece4ff6029244b197171 (patch)
tree118ecad6f53ccd2286fe75a9eb596723de62a3f5 /gcc
parent96af667a5e7aa8909958c4c59b8672fc93d24799 (diff)
downloadgcc-2af88768a87bab5f3234ece4ff6029244b197171.zip
gcc-2af88768a87bab5f3234ece4ff6029244b197171.tar.gz
gcc-2af88768a87bab5f3234ece4ff6029244b197171.tar.bz2
reload1.c (reload_reg_reaches_end_p): A RELOAD_OTHER can overwrite the value in a RELOAD_FOR_INPUT and other kinds of...
* reload1.c (reload_reg_reaches_end_p): A RELOAD_OTHER can overwrite the value in a RELOAD_FOR_INPUT and other kinds of reloads just like an RELOAD_FOR_OUTPUT would. From-SVN: r37019
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/reload1.c12
2 files changed, 11 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8a97f07..b8d1ab6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
2000-10-23 Geoff Keating <geoffk@cygnus.com>
+ * reload1.c (reload_reg_reaches_end_p): A RELOAD_OTHER can
+ overwrite the value in a RELOAD_FOR_INPUT and other kinds of
+ reloads just like an RELOAD_FOR_OUTPUT would.
+
* local-alloc.c (update_equiv_regs): Add an abort(). When
deleting or moving insns, update reg_equiv[regno].init_insns.
diff --git a/gcc/reload1.c b/gcc/reload1.c
index f90897a..c194361 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -4480,8 +4480,9 @@ reload_reg_reaches_end_p (regno, opnum, type)
if (TEST_HARD_REG_BIT (reload_reg_used_in_op_addr_reload, regno))
return 0;
- return (! TEST_HARD_REG_BIT (reload_reg_used_in_op_addr, regno)
- && ! TEST_HARD_REG_BIT (reload_reg_used_in_insn, regno));
+ return (!TEST_HARD_REG_BIT (reload_reg_used_in_op_addr, regno)
+ && !TEST_HARD_REG_BIT (reload_reg_used_in_insn, regno)
+ && !TEST_HARD_REG_BIT (reload_reg_used, regno));
case RELOAD_FOR_INPUT:
/* Similar to input address, except we start at the next operand for
@@ -4506,7 +4507,7 @@ reload_reg_reaches_end_p (regno, opnum, type)
|| TEST_HARD_REG_BIT (reload_reg_used_in_output[i], regno))
return 0;
- return 1;
+ return (!TEST_HARD_REG_BIT (reload_reg_used, regno));
case RELOAD_FOR_OPADDR_ADDR:
for (i = 0; i < reload_n_operands; i++)
@@ -4515,8 +4516,9 @@ reload_reg_reaches_end_p (regno, opnum, type)
|| TEST_HARD_REG_BIT (reload_reg_used_in_output[i], regno))
return 0;
- return (! TEST_HARD_REG_BIT (reload_reg_used_in_op_addr, regno)
- && !TEST_HARD_REG_BIT (reload_reg_used_in_insn, regno));
+ return (!TEST_HARD_REG_BIT (reload_reg_used_in_op_addr, regno)
+ && !TEST_HARD_REG_BIT (reload_reg_used_in_insn, regno)
+ && !TEST_HARD_REG_BIT (reload_reg_used, regno));
case RELOAD_FOR_INSN:
/* These conflict with other outputs with RELOAD_OTHER. So