From a4ec62b497a924c636fcca6b57bcd5c3f9f7d210 Mon Sep 17 00:00:00 2001 From: Job Noorman Date: Thu, 13 Jun 2024 16:40:15 +0200 Subject: [PATCH] ir3: remove spilled splits in shared RA They get replaced by a newly created split and leaving the original one around runs into validation errors. Signed-off-by: Job Noorman Part-of: --- src/freedreno/ir3/ir3_shared_ra.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/freedreno/ir3/ir3_shared_ra.c b/src/freedreno/ir3/ir3_shared_ra.c index 8456d789b77..882bbb6c062 100644 --- a/src/freedreno/ir3/ir3_shared_ra.c +++ b/src/freedreno/ir3/ir3_shared_ra.c @@ -961,6 +961,7 @@ handle_split(struct ra_ctx *ctx, struct ir3_instruction *split) spill_split->split.off = split->split.off; ir3_instr_move_after(spill_split, split); dst_interval->spill_def = dst; + list_del(&split->node); return; } @@ -1192,7 +1193,7 @@ handle_block(struct ra_ctx *ctx, struct ir3_block *block) if (block->predecessors_count > 1) record_pred_live_outs(ctx, block); - foreach_instr (instr, &block->instr_list) { + foreach_instr_safe (instr, &block->instr_list) { di(instr, "processing"); handle_instr(ctx, instr);