[024/nnn] poly_int: ira subreg liveness tracking

Jeff Law law@redhat.com
Tue Nov 28 21:10:00 GMT 2017


On 10/23/2017 11:09 AM, Richard Sandiford wrote:
> Normmaly the IRA-reload interface tries to track the liveness of
> individual bytes of an allocno if the allocno is sometimes written
> to as a SUBREG.  This isn't possible for variable-sized allocnos,
> but it doesn't matter because targets with variable-sized registers
> should use LRA instead.
> 
> This patch adds a get_subreg_tracking_sizes function for deciding
> whether it is possible to model a partial read or write.  Later
> patches make it return false if anything is variable.
> 
> 
> 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
> 	    Alan Hayward  <alan.hayward@arm.com>
> 	    David Sherwood  <david.sherwood@arm.com>
> 
> gcc/
> 	* ira.c (get_subreg_tracking_sizes): New function.
> 	(init_live_subregs): Take an integer size rather than a register.
> 	(build_insn_chain): Use get_subreg_tracking_sizes.  Update calls
> 	to init_live_subregs.
OK.

Note this is starting to get close to the discussion around CLOBBER_HIGH
vs using a self set with a low subreg that we're having with Alan on
another thread in that liveness tracking of subregs of SVE regs could
potentially use some improvements.

When I quickly looked at the subreg handling in the df infrstructure my
first thought was that it might need some updating for SVE.  I can't
immediately call bits for poly_int/SVE in the patches to-date.  Have you
dug in there at all for the poly_int/SVE work?

Jeff



More information about the Gcc-patches mailing list