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

--- Comment #7 from Andreas Schwab <sch...@linux-m68k.org> ---
So this is actually a bug in the lra pass:

(insn 37 36 39 5 (set (mem:SI (pre_dec:SI (reg/f:SI 15 %sp)) [6  S1 A8])
        (sign_extend:SI (reg:QI 52 [ _14 ]))) "Gdecl.ii":24:19 99
{*68k_extendqisi2}
     (expr_list:REG_DEAD (reg:QI 52 [ _14 ])
        (expr_list:REG_ARGS_SIZE (const_int 4 [0x4])
            (nil))))

This is split by lra:

(insn 37 61 62 5 (set (reg:SI 1 %d1 [56])
        (sign_extend:SI (reg:QI 1 %d1 [orig:56+3 ] [56]))) "Gdecl.ii":24:19 99
{*68k_extendqisi2}
     (expr_list:REG_ARGS_SIZE (const_int 4 [0x4])
        (nil)))
(insn 62 37 39 5 (set (mem:SI (pre_dec:SI (reg/f:SI 15 %sp)) [6  S1 A8])
        (reg:SI 1 %d1 [56])) "Gdecl.ii":24:19 55 {*movsi_m68k2}
     (nil))

But the REG_ARGS_SIZE note needs to be moved to insn 62.

In reload, this is done by fixup_args_size_notes.

Reply via email to