This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Invalid shortcut in calculate_global_regs_live


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~

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]