diff options
author | Jason Ekstrand <jason@jlekstrand.net> | 2019-09-02 12:53:16 -0500 |
---|---|---|
committer | Jason Ekstrand <jason@jlekstrand.net> | 2019-09-06 23:39:01 +0000 |
commit | f81a2623d82ccad6177fe1fe5b80a6398df29b6e (patch) | |
tree | 50b9a749a607e41a18218ce3b4028b9f2a821aa5 | |
parent | 517142252f0c63189293c7176efbf490b7ae95ea (diff) |
nir: Add a block_is_unreachable helper
Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
-rw-r--r-- | src/compiler/nir/nir.h | 1 | ||||
-rw-r--r-- | src/compiler/nir/nir_dominance.c | 14 |
2 files changed, 15 insertions, 0 deletions
diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h index ab1aab774a0..1bfea2b2143 100644 --- a/src/compiler/nir/nir.h +++ b/src/compiler/nir/nir.h @@ -3373,6 +3373,7 @@ void nir_calc_dominance(nir_shader *shader); nir_block *nir_dominance_lca(nir_block *b1, nir_block *b2); bool nir_block_dominates(nir_block *parent, nir_block *child); +bool nir_block_is_unreachable(nir_block *block); void nir_dump_dom_tree_impl(nir_function_impl *impl, FILE *fp); void nir_dump_dom_tree(nir_shader *shader, FILE *fp); diff --git a/src/compiler/nir/nir_dominance.c b/src/compiler/nir/nir_dominance.c index c678727b471..8369c28984d 100644 --- a/src/compiler/nir/nir_dominance.c +++ b/src/compiler/nir/nir_dominance.c @@ -239,6 +239,20 @@ nir_block_dominates(nir_block *parent, nir_block *child) child->dom_post_index <= parent->dom_post_index; } +bool +nir_block_is_unreachable(nir_block *block) +{ + assert(nir_cf_node_get_function(&block->cf_node)->valid_metadata & + nir_metadata_dominance); + assert(nir_cf_node_get_function(&block->cf_node)->valid_metadata & + nir_metadata_block_index); + + /* Unreachable blocks have no dominator. The only reachable block with no + * dominator is the start block which has index 0. + */ + return block->index > 0 && block->imm_dom == NULL; +} + void nir_dump_dom_tree_impl(nir_function_impl *impl, FILE *fp) { |