Invalid shortcut in calculate_global_regs_live
Richard Henderson
rth@redhat.com
Mon Nov 27 11:13:00 GMT 2000
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~
More information about the Gcc-patches
mailing list