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]
Other format: [Raw text]

Re: [3/9] Remove no_caller_save_reg_set


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.sandiford@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


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