Kaz Kojima wrote:
[.expand after the patch]
(set (reg/f:SI 160) (const:SI (unspec [(symbol_ref:SI ("baz"))] 7)))
(set (reg:SI 161) (plus:SI (reg:SI 12 r12) (reg/f:SI 160)))
(set (reg/f:SI 159) (mem/u/c:SI (reg:SI 161)))
(set (reg:SI 0 r0) (call (mem:SI (symbol_ref:SI ("bar")))))
(set (mem/c/i:SI (reg/f:SI 159)) (reg:SI 0 r0)))
The last insn is invalid. Before reload, a return value in a
CLASS_LIKELY_SPILLED
hard reg cannot be used in arbitrary instructions, but has to be copied
to a plain register
first.