[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