aco/ra: remove live-in temporary from live_out_per_block when moving it
Otherwise, handle_loop_phis() might pass it to handle_live_in() and then
we could have two phis for this variable.
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Fixes: 7c64623e94
("aco/ra: refactor SSA repairing during register allocation")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10236>
This commit is contained in:
parent
11fde1247c
commit
5b8a4516e6
|
@ -2200,6 +2200,11 @@ void register_allocation(Program *program, std::vector<IDSet>& live_out_per_bloc
|
||||||
for (unsigned i = 0; i < preds.size(); i++)
|
for (unsigned i = 0; i < preds.size(); i++)
|
||||||
new_phi->operands[i] = Operand(pc.first);
|
new_phi->operands[i] = Operand(pc.first);
|
||||||
instructions.emplace_back(std::move(new_phi));
|
instructions.emplace_back(std::move(new_phi));
|
||||||
|
|
||||||
|
/* Remove from live_out_per_block (now used for live-in), because handle_loop_phis()
|
||||||
|
* would re-create this phi later if this is a loop header.
|
||||||
|
*/
|
||||||
|
live_out_per_block[block.index].erase(orig.id());
|
||||||
}
|
}
|
||||||
|
|
||||||
register_file.fill(definition);
|
register_file.fill(definition);
|
||||||
|
|
Loading…
Reference in New Issue