ir3: fix clearing merge sets after shared RA

After spilling during regular RA, merge sets need to be fixed up. To
find all merge sets, fixup_merge_sets used ra_foreach_dst. However,
after shared RA has run, shared dsts wouldn't have the IR3_REG_SSA flag
set anymore leaving their merge sets lingering. This patch fixes this by
using foreach_dst instead.

Fixes: fa22b0901a ("ir3/ra: Add specialized shared register RA/spilling")
Signed-off-by: Job Noorman <jnoorman@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28341>
This commit is contained in:
Job Noorman 2024-08-15 08:46:35 +02:00 committed by Marge Bot
parent 9013e11d8c
commit 28d2a27030

View file

@ -2097,7 +2097,7 @@ fixup_merge_sets(struct ir3_liveness *live, struct ir3 *ir)
{
foreach_block (block, &ir->block_list) {
foreach_instr (instr, &block->instr_list) {
ra_foreach_dst (dst, instr) {
foreach_dst (dst, instr) {
dst->merge_set = NULL;
dst->merge_set_offset = 0;
}