nir: update fixup_phi_srcs() to handle registers

We need to do this because we partially get out of SSA when unrolling
and cloning loops.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
Timothy Arceri 2016-12-14 16:14:20 +11:00
parent d781320974
commit b84dfa0f62

View file

@ -603,12 +603,17 @@ fixup_phi_srcs(clone_state *state)
{
list_for_each_entry_safe(nir_phi_src, src, &state->phi_srcs, src.use_link) {
src->pred = remap_local(state, src->pred);
assert(src->src.is_ssa);
src->src.ssa = remap_local(state, src->src.ssa);
/* Remove from this list and place in the uses of the SSA def */
/* Remove from this list */
list_del(&src->src.use_link);
list_addtail(&src->src.use_link, &src->src.ssa->uses);
if (src->src.is_ssa) {
src->src.ssa = remap_local(state, src->src.ssa);
list_addtail(&src->src.use_link, &src->src.ssa->uses);
} else {
src->src.reg.reg = remap_reg(state, src->src.reg.reg);
list_addtail(&src->src.use_link, &src->src.reg.reg->uses);
}
}
assert(list_empty(&state->phi_srcs));
}