On 10/1/19 4:39 PM, Richard Sandiford wrote:
> One effect of https://gcc.gnu.org/ml/gcc-patches/2019-09/msg00802.html
> was to strengthen the sanity check in lra_assigns so that it checks
> whether reg_renumber is consistent with the whole conflict set.
> This duly tripped on csky for a pseudo that had been allocated
> to the eliminated frame pointer.  (csky doesn't have a separate
> hard frame pointer.)
> 
> lra-lives uses:
> 
> /* Set of hard regs (except eliminable ones) currently live.  */
> static HARD_REG_SET hard_regs_live;
> 
> to track the set of live directly-referenced hard registers, and it
> correctly implements the exclusion when setting up the initial set:
> 
>   hard_regs_live &= ~eliminable_regset;
> 
> But later calls to make_hard_regno_live and make_hard_regno_dead
> would process eliminable registers like other registers, recording
> conflicts for them and potentially making them live.  (Note that
> after r266086, make_hard_regno_dead adds conflicts for registers
> that are already marked dead.)  I think this would have had the
> effect of pessimising targets without a separate hard frame pointer.
> 
> Tested on aarch64-linux-gnu (where it probably doesn't do much)
> and against the testcase on csky-linux-gnu.  OK to install?
> 
> Richard
> 
> 
> 2019-10-01  Richard Sandiford  <richard.sandif...@arm.com>
> 
> gcc/
>       PR middle-end/91957
>       * lra-lives.c (make_hard_regno_dead): Don't record conflicts for
>       eliminable registers.
>       (make_hard_regno_live): Likewise, and don't make them live.
OK
jeff

Reply via email to