summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2016-06-03 15:06:52 -0700
committerEric Anholt <[email protected]>2016-07-04 16:33:22 -0700
commitaa76ba6f2fb0d6438b2b652d9fa466b6cf77fa31 (patch)
tree91fff3be56248c36da2e80134fed1bd9866cc2c4
parent2a8973fb78026b830786aa74b07805730ae891ca (diff)
vc4: DCE instructions with a NULL destination.
I'm going to add an optimization for redundant SF update removal, which will just remove the SF and leave us (in many cases) with an instruction with a NULL destination and no side effects. Rather than teaching that pass whether the whole instruction can be removed, leave that responsibility to this pass.
-rw-r--r--src/gallium/drivers/vc4/vc4_opt_dead_code.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/gallium/drivers/vc4/vc4_opt_dead_code.c b/src/gallium/drivers/vc4/vc4_opt_dead_code.c
index d3562ee947e..ad51ed779ea 100644
--- a/src/gallium/drivers/vc4/vc4_opt_dead_code.c
+++ b/src/gallium/drivers/vc4/vc4_opt_dead_code.c
@@ -86,8 +86,9 @@ qir_opt_dead_code(struct vc4_compile *c)
list_for_each_entry_safe_rev(struct qinst, inst, &c->instructions,
link) {
- if (inst->dst.file == QFILE_TEMP &&
- !used[inst->dst.index] &&
+ if ((inst->dst.file == QFILE_NULL ||
+ (inst->dst.file == QFILE_TEMP &&
+ !used[inst->dst.index])) &&
!inst->sf &&
!qir_has_side_effects(c, inst) &&
!has_nonremovable_reads(c, inst)) {