From: Geoff Keating Date: Mon, 23 Oct 2000 18:45:15 +0000 (+0000) Subject: reload1.c (reload_reg_reaches_end_p): A RELOAD_OTHER can overwrite the value in a... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2af88768a87bab5f3234ece4ff6029244b197171;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8a97f077e58..b8d1ab67723 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2000-10-23 Geoff Keating + * 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 f90897adcac..c194361118d 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