aco/ra: fix phi operand renaming
In case one operand was renamed and another operand came from an incomplete phi, it could happen, that the original name was not restored. This has no impact on the code, but ensures correct SSA is maintained during RA. Cc: mesa-stable Reviewed-by: Rhys Perry <pendingchaos02@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8109>
This commit is contained in:
parent
e384476d1e
commit
b50d3e5760
|
@ -1615,6 +1615,11 @@ Temp handle_live_in(ra_ctx& ctx, Temp val, Block* block)
|
|||
phi->operands[i].setFixed(ctx.assignments[ops[i].id()].reg);
|
||||
if (ops[i].regClass() == new_val.regClass())
|
||||
ctx.affinities[new_val.id()] = ops[i].id();
|
||||
/* make sure the operand gets it's original name in case
|
||||
* it comes from an incomplete phi */
|
||||
std::unordered_map<unsigned, phi_info>::iterator it = ctx.phi_map.find(ops[i].id());
|
||||
if (it != ctx.phi_map.end())
|
||||
it->second.uses.emplace(phi.get());
|
||||
}
|
||||
ctx.assignments.emplace_back();
|
||||
assert(ctx.assignments.size() == ctx.program->peekAllocationId());
|
||||
|
|
Loading…
Reference in New Issue