From 846e5d5ba82abea9fcba3a7a763f5d57a03269b3 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Thu, 3 Oct 2019 16:13:13 -0400 Subject: [PATCH] pan/midgard: Don't try to OR live_in of successors By definition, once liveness analysis has occurred: live_out = OR {succ} succ->live_in Signed-off-by: Alyssa Rosenzweig --- src/panfrost/midgard/midgard_ra.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/panfrost/midgard/midgard_ra.c b/src/panfrost/midgard/midgard_ra.c index 211c4f4d497..dacc0d9106e 100644 --- a/src/panfrost/midgard/midgard_ra.c +++ b/src/panfrost/midgard/midgard_ra.c @@ -26,6 +26,7 @@ #include "midgard_ops.h" #include "util/register_allocate.h" #include "util/u_math.h" +#include "util/u_memory.h" /* For work registers, we can subdivide in various ways. So we create * classes for the various sizes and conflict accordingly, keeping in @@ -553,12 +554,7 @@ mir_compute_interference( * end of each block and walk the block backwards. */ mir_foreach_block(ctx, blk) { - uint8_t *live = calloc(ctx->temp_count, 1); - - mir_foreach_successor(blk, succ) { - for (unsigned i = 0; i < ctx->temp_count; ++i) - live[i] |= succ->live_in[i]; - } + uint8_t *live = mem_dup(blk->live_out, ctx->temp_count * sizeof(uint8_t)); mir_foreach_instr_in_block_rev(blk, ins) { /* Mark all registers live after the instruction as -- 2.30.2