[Bug rtl-optimization/87871] [9 Regression] testcases fail after r265398 on arm

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Apr 12 14:39:00 GMT 2019


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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org,
                   |                            |vmakarov at gcc dot gnu.org

--- Comment #17 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(In reply to Segher Boessenkool from comment #15)
>       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 :-)

CCing Vlad on this.  I don't see that *movsi_compare0 would in any way prefer
the =r,0 alternative over =r,r and using the =r,r alternative would allow to
remove one instruction.


More information about the Gcc-bugs mailing list