[Mesa-dev] [PATCH v2 03/14] nir: cleanup cf nodes earlier in nir_cf_node_remove()

Connor Abbott cwabbott0 at gmail.com
Thu May 21 09:40:58 PDT 2015


Before, when we were deleting a cf node that was a block, we were first
removing all the instructions and then calling cleanup_cf_node(), at
which point cleanup_cf_node() couldn't do its job. Just move it before
everything else, which should be ok for the non-block case too.

v2: split out from previous commit
Signed-off-by: Connor Abbott <cwabbott0 at gmail.com>
---
 src/glsl/nir/nir.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/glsl/nir/nir.c b/src/glsl/nir/nir.c
index 704553f..a2b5e7c 100644
--- a/src/glsl/nir/nir.c
+++ b/src/glsl/nir/nir.c
@@ -1253,6 +1253,8 @@ nir_cf_node_remove(nir_cf_node *node)
    nir_function_impl *impl = nir_cf_node_get_function(node);
    nir_metadata_preserve(impl, nir_metadata_none);
 
+   cleanup_cf_node(node, impl);
+
    if (node->type == nir_cf_node_block) {
       /*
        * Basic blocks can't really be removed by themselves, since they act as
@@ -1274,8 +1276,6 @@ nir_cf_node_remove(nir_cf_node *node)
       exec_node_remove(&node->node);
       stitch_blocks(before_block, after_block);
    }
-
-   cleanup_cf_node(node);
 }
 
 static bool
-- 
2.1.0



More information about the mesa-dev mailing list