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