From 678aef9f06303a22551753c389b1da21ab48c667 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Thu, 19 Jan 2023 17:06:01 +0100 Subject: [PATCH] aco/dominance: set immediate dominator for any BB without predecessors Part-of: --- src/amd/compiler/aco_dominance.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/amd/compiler/aco_dominance.cpp b/src/amd/compiler/aco_dominance.cpp index c3dda2be957..1fc8231dc71 100644 --- a/src/amd/compiler/aco_dominance.cpp +++ b/src/amd/compiler/aco_dominance.cpp @@ -41,11 +41,16 @@ namespace aco { void dominator_tree(Program* program) { - program->blocks[0].logical_idom = 0; - program->blocks[0].linear_idom = 0; - - for (unsigned i = 1; i < program->blocks.size(); i++) { + for (unsigned i = 0; i < program->blocks.size(); i++) { Block& block = program->blocks[i]; + + /* If this block has no predecessor, it dominates itself by definition */ + if (block.linear_preds.empty()) { + block.linear_idom = block.index; + block.logical_idom = block.index; + continue; + } + int new_logical_idom = -1; int new_linear_idom = -1; for (unsigned pred_idx : block.logical_preds) {