From f472949b243341547bf591af116e62842396c58b Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Tue, 7 Sep 2021 14:55:04 -0700 Subject: [PATCH] freedreno/ir3: Update physical_successors after retargetting jumps Signed-off-by: Rob Clark Part-of: --- src/freedreno/ir3/ir3_legalize.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/freedreno/ir3/ir3_legalize.c b/src/freedreno/ir3/ir3_legalize.c index fab568a7343..8d56efccfc6 100644 --- a/src/freedreno/ir3/ir3_legalize.c +++ b/src/freedreno/ir3/ir3_legalize.c @@ -511,6 +511,16 @@ retarget_jump(struct ir3_instruction *instr, struct ir3_block *new_target) cur_block->successors[1] = new_target; } + /* also update physical_successors.. we don't really need them at + * this stage, but it keeps ir3_validate happy: + */ + if (cur_block->physical_successors[0] == old_target) { + cur_block->physical_successors[0] = new_target; + } else { + debug_assert(cur_block->physical_successors[1] == old_target); + cur_block->physical_successors[1] = new_target; + } + /* update new target's predecessors: */ ir3_block_add_predecessor(new_target, cur_block);