nir: Don't forget if-uses in new nir_opt_dead_cf liveness check

Commit 08bfd710a2. (nir/dead_cf: Stop
relying on liveness analysis) introduced a new check that iterated
through a SSA def's uses, to see if it's used.  But it only checked
normal uses, and not uses which are part of an 'if' condition.  This
led to it thinking more nodes were dead than possible.

Fixes Piglit's variable-indexing/tcs-output-array-float-index-wr test
(and related tests) with the out-of-tree Iris driver.

Fixes: 08bfd710a2 nir/dead_cf: Stop relying on liveness analysis
Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
Kenneth Graunke 2019-02-19 23:17:28 -08:00
parent b9eed05e7f
commit d6337b59f6

View file

@ -160,6 +160,16 @@ def_only_used_in_cf_node(nir_ssa_def *def, void *_node)
return false;
}
/* Same check for if-condition uses */
nir_foreach_if_use(use, def) {
nir_block *use_block =
nir_cf_node_as_block(nir_cf_node_prev(&use->parent_if->cf_node));
if (use_block->index <= before->index ||
use_block->index >= after->index)
return false;
}
return true;
}