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

--- Comment #6 from Wilco <wilco at gcc dot gnu.org> ---
(In reply to Segher Boessenkool from comment #5)
> Oh, it does show the intermediate results:
> 
> Trying 18 -> 19:
> Successfully matched this instruction:
> (set (reg/f:DI 78 [ _7 ])
>     (plus:DI (ashift:DI (reg:DI 83 [ _26 ])
>             (const_int 2 [0x2]))
>         (reg/f:DI 76 [ _4 ])))
> allowing combination of insns 18 and 19
> original costs 4 + 4 = 8
> replacement cost 8
> deferring deletion of insn with uid = 18.
> modifying insn i3    19: r78:DI=r83:DI<<0x2+r76:DI
>       REG_DEAD r83:DI
>       REG_DEAD r76:DI
> deferring rescan insn with uid = 19.
> 
> (How do you dump things?  You forgot a -all?)

Yes, but this is all it shows for the bit that goes wrong:

allowing combination of insns 19, 20 and 21
original costs 8 + 20 + 4 = 32
replacement costs 28 + 4 = 32
deferring rescan insn with uid = 21.
deferring deletion of insn with uid = 19.
modifying insn i2    20: r83:DI=sign_extend([r83:DI*0x4+r76:DI])
      REG_DEAD r76:DI
deferring rescan insn with uid = 20.
modifying insn i3    21: r82:SI=r83:DI#0
      REG_DEAD r83:DI
      REG_DEAD r83:DI
      REG_DEAD r83:DI
deferring rescan insn with uid = 21.

I guess it would be good if it shows the instructions it's trying to combine in
this part, because it's impossible to follow when the instructions involved
have been changed already...

Reply via email to