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

--- Comment #18 from Peter Bergner <bergner at gcc dot gnu.org> ---
(In reply to Segher Boessenkool from comment #15)
>       Popping a5(r116,l0)  -- assign reg 3
>       Popping a3(r112,l0)  -- assign reg 4
>       Popping a2(r114,l0)  -- assign reg 3
>       Popping a0(r111,l0)  -- assign reg 0
>       Popping a4(r117,l0)  -- assign reg 0
>       Popping a1(r113,l0)  -- assign reg 2
> Assigning 4 to a5r116
> Disposition:
>     0:r111 l0     0    3:r112 l0     4    1:r113 l0     2    2:r114 l0     3
>     5:r116 l0     4    4:r117 l0     0
> 
> 
> r116 does not conflict with *any* other pseudo.  It is alive in the first
> two insns of the function, which are

So we initially assign r3 to r116 presumably because it has the same cost as
the other gprs and it occurs first in REG_ALLOC_ORDER.  Then
improve_allocation() decides that r4 is a better hard reg and switches the
assignment to that.  I'm not sure why it wouldn't choose r0 there instead.

Reply via email to