summaryrefslogtreecommitdiff
path: root/src/freedreno/ir3/ir3_liveness.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/freedreno/ir3/ir3_liveness.c')
-rw-r--r--src/freedreno/ir3/ir3_liveness.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/freedreno/ir3/ir3_liveness.c b/src/freedreno/ir3/ir3_liveness.c
index 4285c7dc7cf..86e4a0fa1e7 100644
--- a/src/freedreno/ir3/ir3_liveness.c
+++ b/src/freedreno/ir3/ir3_liveness.c
@@ -96,6 +96,20 @@ compute_block_liveness(struct ir3_liveness *live, struct ir3_block *block,
}
}
}
+
+ for (unsigned i = 0; i < block->physical_predecessors_count; i++) {
+ const struct ir3_block *pred = block->physical_predecessors[i];
+ unsigned name;
+ BITSET_FOREACH_SET(name, tmp_live, live->definitions_count) {
+ struct ir3_register *reg = live->definitions[name];
+ if (!(reg->flags & IR3_REG_SHARED))
+ continue;
+ if (!BITSET_TEST(live->live_out[pred->index], name)) {
+ progress = true;
+ BITSET_SET(live->live_out[pred->index], name);
+ }
+ }
+ }
return progress;
}