Mesa (staging/19.2): nir: Add a block_is_unreachable helper

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Sep 9 16:27:47 UTC 2019


Module: Mesa
Branch: staging/19.2
Commit: 2c6e34ac9357a9acdf7dc59598e8f1863586bac8
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2c6e34ac9357a9acdf7dc59598e8f1863586bac8

Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Mon Sep  2 12:53:16 2019 -0500

nir: Add a block_is_unreachable helper

Cc: mesa-stable at lists.freedesktop.org
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
(cherry picked from commit f81a2623d82ccad6177fe1fe5b80a6398df29b6e)

---

 src/compiler/nir/nir.h           |  1 +
 src/compiler/nir/nir_dominance.c | 14 ++++++++++++++
 2 files changed, 15 insertions(+)

diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h
index 0462fd89a04..5ad2d40f96a 100644
--- a/src/compiler/nir/nir.h
+++ b/src/compiler/nir/nir.h
@@ -3378,6 +3378,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)
 {




More information about the mesa-commit mailing list