summaryrefslogtreecommitdiffstats
path: root/src/panfrost/midgard
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <[email protected]>2019-10-03 16:13:13 -0400
committerAlyssa Rosenzweig <[email protected]>2019-10-03 22:29:50 -0400
commit846e5d5ba82abea9fcba3a7a763f5d57a03269b3 (patch)
tree03bfed594c7e386fae147af0f73a5fa3e527e357 /src/panfrost/midgard
parent013cd6bed2c6d2e3ba8a720c447cc33206ed56ae (diff)
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 <[email protected]>
Diffstat (limited to 'src/panfrost/midgard')
-rw-r--r--src/panfrost/midgard/midgard_ra.c8
1 files 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