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

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #3)
> ```
> Trying 6 -> 7:
>     6: r92:DI=`f1'
>       REG_EQUAL `f1'
>     7: call [r92:DI] argc:0
>       REG_DEAD r92:DI
>       REG_CALL_DECL `f1'
> Successfully matched this instruction:
> (parallel [
>         (call (mem:DI (symbol_ref:DI ("f1") [flags 0x41]  <function_decl
> 0x793a1bc28000 f1>) [0 f1 S8 A8])
>             (const_int 0 [0]))
>         (clobber (reg:DI 30 x30))
>     ])
> allowing combination of insns 6 and 7
> original costs 4 + 0 = 0
> replacement cost 0
> deferring deletion of insn with uid = 6.
> modifying insn i3     7: call [`f1'] argc:0
>       REG_CALL_DECL `f1'
> deferring rescan insn with uid = 7.
> ```
> 
> is the cause. 
> 
> That is due to r8-685-g47210a041b3b40 .

Basically we combine the indirect call into a direct one and then have to undo
it again.

Reply via email to