This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Invalid shortcut in calculate_global_regs_live
- To: Bernd Schmidt <bernds at redhat dot com>
- Subject: Re: Invalid shortcut in calculate_global_regs_live
- From: Richard Henderson <rth at redhat dot com>
- Date: Mon, 27 Nov 2000 11:13:35 -0800
- Cc: gcc-patches at gcc dot gnu dot org
- References: <20001123114259.B21811@redhat.com> <Pine.LNX.4.21.0011271741220.17630-100000@host117.cygnus>
On Mon, Nov 27, 2000 at 05:51:51PM +0000, Bernd Schmidt wrote:
> @@ -4635,7 +4668,16 @@ mark_set_1 (pbi, code, reg, cond, insn,
> {
> int needed_regno = REGNO_REG_SET_P (pbi->reg_live, i);
> if (pbi->local_set)
> - SET_REGNO_REG_SET (pbi->local_set, i);
> + {
> + /* Order of the set operation matters here since both
> + sets may be the same. */
> + CLEAR_REGNO_REG_SET (pbi->cond_local_set, i);
> + if (cond != NULL_RTX
> + && ! REGNO_REG_SET_P (pbi->local_set, i))
> + SET_REGNO_REG_SET (pbi->cond_local_set, i);
> + else
> + SET_REGNO_REG_SET (pbi->local_set, i);
> + }
This bit is not completely correct. See just below where
mark_regno_cond_dead reports unconditional death for a register.
r~