On 08/28/2017 02:26 AM, Richard Sandiford wrote:
> This patch adds helper functions that say which of the two modes
> involved in a subreg is the larger, preferring the outer mode in
> the event of a tie.  It also converts IRA and reload to track modes
> instead of byte sizes, since this is slightly more convenient when
> variable-sized modes are added later.
> 
> Tested on aarch64-linux-gnu and x86_64-linux-gnu, and by checking
> there was no change in the testsuite assembly output for at least
> one target per CPU.  OK to install?
> 
> Richard
> 
> 
> 2017-08-28  Richard Sandiford  <richard.sandif...@linaro.org>
>           Alan Hayward  <alan.hayw...@arm.com>
>           David Sherwood  <david.sherw...@arm.com>
> 
> gcc/
>       * rtl.h (wider_subreg_mode): New function.
>       * ira.h (ira_sort_regnos_for_alter_reg): Take a machine_mode *
>       rather than an unsigned int *.
>       * ira-color.c (regno_max_ref_width): Replace with...
>       (regno_max_ref_mode): ...this new variable.
>       (coalesced_pseudo_reg_slot_compare): Update accordingly.
>       Use wider_subreg_mode.
>       (ira_sort_regnos_for_alter_reg): Likewise.  Take a machine_mode *
>       rather than an unsigned int *.
>       * lra-constraints.c (uses_hard_regs_p): Use wider_subreg_mode.
>       (process_alt_operands): Likewise.
>       (invariant_p): Likewise.
>       * lra-spills.c (assign_mem_slot): Likewise.
>       (add_pseudo_to_slot): Likewise.
>       * lra.c (collect_non_operand_hard_regs): Likewise.
>       (add_regs_to_insn_regno_info): Likewise.
>       * reload1.c (regno_max_ref_width): Replace with...
>       (regno_max_ref_mode): ...this new variable.
>       (reload): Update accordingly.  Update call to
>       ira_sort_regnos_for_alter_reg.
>       (alter_reg): Update to use regno_max_ref_mode.  Call wider_subreg_mode.
>       (init_eliminable_invariants): Update to use regno_max_ref_mode.
>       (scan_paradoxical_subregs): Likewise.
OK.
jeff

Reply via email to