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

--- Comment #15 from Segher Boessenkool <segher at gcc dot gnu.org> ---
      Forming thread by copy 0:a0r111-a4r117 (freq=500):
        Result (freq=3500): a0r111(2500) a4r117(1000)
      Forming thread by copy 2:a3r112-a5r116 (freq=125):
        Result (freq=4500): a3r112(1500) a5r116(3000)
      Forming thread by copy 1:a2r114-a3r112 (freq=62):
        Result (freq=5500): a2r114(1000) a3r112(1500) a5r116(3000)
      Pushing a1(r113,l0)(cost 0)
      Pushing a4(r117,l0)(cost 0)
      Pushing a0(r111,l0)(cost 0)
      Pushing a2(r114,l0)(cost 0)
      Pushing a3(r112,l0)(cost 0)
      Pushing a5(r116,l0)(cost 0)
      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

(insn 50 3 7 2 (set (reg:SI 116)
        (reg:SI 0 r0 [ a ])) "ira-shrinkwrap-prep-1.c":14:1 181
{*arm_movsi_insn}
     (nil))
(insn 7 50 8 2 (parallel [
            (set (reg:CC 100 cc)
                (compare:CC (reg:SI 116)
                    (const_int 0 [0])))
            (set (reg/v:SI 112 [ a ])
                (reg:SI 116))
        ]) "ira-shrinkwrap-prep-1.c":17:6 188 {*movsi_compare0}
     (expr_list:REG_DEAD (reg:SI 116)
        (nil)))

r0 _is_ used by a successor (as the argument for the call to foo), but we
could use r0 for r116 anyway, since what we assign to it is r0 :-)

Reply via email to