On 20/09/18 13:46, Richard Sandiford wrote:
Andrew Stubbs <a...@codesourcery.com> writes:
In the case of move_unallocated_pseudos it's because the table
pseudo_replaced_reg only has entries for the new pseudos directly
created by find_moveable_pseudos, not the ones created indirectly.

What I more meant was: where do the moves that introduce the new
pseudos get created?

For find_moveable_pseudos, I believe it's where it calls gen_move_insn.

Almost all targets' move patterns introduce new pseudos if
can_create_pseudo_p in certain circumstances, so GCN isn't doing
anything unusual in the outline above.  I think it comes down to
the specifics of which kinds of operands require these temporaries
and where the moves are being introduced.

GCN creates new pseudos for all vector moves. Maybe that's just less exotic than other targets do?

AIUI IRA normally calls expand_reg_info () at a suitable point
to cope with new pseudos.  It sounds like we might be missing
a call somewhere.

Yes, it does, but one of the places I had to patch is *within* expand_reg_info: it's setup_preferred_alternate_classes_for_new_pseudos that asserts for pseudos created by gen_move_insn.

Andrew

Reply via email to