On 9/10/19 10:30 AM, Richard Sandiford wrote:
> Reusing the reasoning from the call_fixed_reg_set patch:
> 
>   for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
>     for (j = 1; j <= MOVE_MAX_WORDS; j++)
>       if (reg_save_code (i,regno_save_mode[i][j]) == -1)
> 
> should be true whenever regno_save_mode[i][j] == VOIDmode,
> which it is for:
> 
>   ~call_used_reg_set | ~have_save_mode
> 
> So this condition amounts to:
> 
>   ~call_used_reg_set | ~have_save_mode | ~have_save_insn
>   == ~call_used_reg_set | ~savable_regs
> 
> no_caller_save_reg_set is then set if call_used_regs[i], so
> no_caller_save_reg_set is:
> 
>   call_used_reg_set & (~call_used_reg_set | ~savable_regs)
>   == call_used_reg_set & ~savable_regs
> 
> This patch expands its single user accordingly.
> 
> Note that ~savable_regs is always empty on LRA targets.
> 
> 
> 2019-09-10  Richard Sandiford  <richard.sandif...@arm.com>
> 
> gcc/
>       * hard-reg-set.h (target_hard_regs::x_no_caller_save_reg_set): Delete.
>       (no_caller_save_reg_set): Delete.
>       * caller-save.c (init_caller_save): Don't initialize it.
>       * ira-conflicts.c (ira_build_conflicts): Calculate
>       no_caller_save_reg_set locally from call_used_reg_set and savable_regs.
OK
jeff

Reply via email to