https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69447

--- Comment #7 from Vladimir Makarov <vmakarov at gcc dot gnu.org> ---
(In reply to Richard Henderson from comment #6)
> ... except that's not the same set of live ranges
> computed by IRA:
> 
>    Insn 55(l0): point = 9
>    Insn 70(l0): point = 11
>    ...
>    Insn 50(l0): point = 19
>    ...
>    Insn 21(l0): point = 61
>    Insn 19(l0): point = 65
>    Insn 17(l0): point = 67
> 
>  a3(r111 [0]): [10..67]
>  a3(r111 [1]): [62..67]
> 
> If we remat insn 21 into insn 50, we don't extend the lifetime
> of r111[0], but we do extend the lifetime of r111[1].
> 
> The problem appears to be that IRA takes subregs into account
> but LRA doesn't.  Vlad, am I on the right track here?

May be.  Bernd extended IRA lately to follow separate subreg live ranges (only
2 subregs).  LRA does not do that.

Reply via email to