nir/nir: Use safe iterators when iterating over the CFG
authorJason Ekstrand <jason.ekstrand@intel.com>
Sat, 8 Nov 2014 02:27:36 +0000 (18:27 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Thu, 15 Jan 2015 15:19:01 +0000 (07:19 -0800)
Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
src/glsl/nir/nir.c

index d0e09ebb34ef3cdf9393e4b41a1d80493e7b15a4..e5346ffba49fc2d5f78d6aa3690b75e41301be7e 100644 (file)
@@ -1738,22 +1738,24 @@ static inline bool
 foreach_if(nir_if *if_stmt, nir_foreach_block_cb cb, bool reverse, void *state)
 {
    if (reverse) {
-      foreach_list_typed_reverse(nir_cf_node, node, node, &if_stmt->else_list) {
+      foreach_list_typed_safe_reverse(nir_cf_node, node, node,
+                                      &if_stmt->else_list) {
          if (!foreach_cf_node(node, cb, reverse, state))
             return false;
       }
 
-      foreach_list_typed_reverse(nir_cf_node, node, node, &if_stmt->then_list) {
+      foreach_list_typed_safe_reverse(nir_cf_node, node, node,
+                                      &if_stmt->then_list) {
          if (!foreach_cf_node(node, cb, reverse, state))
             return false;
       }
    } else {
-      foreach_list_typed(nir_cf_node, node, node, &if_stmt->then_list) {
+      foreach_list_typed_safe(nir_cf_node, node, node, &if_stmt->then_list) {
          if (!foreach_cf_node(node, cb, reverse, state))
             return false;
       }
 
-      foreach_list_typed(nir_cf_node, node, node, &if_stmt->else_list) {
+      foreach_list_typed_safe(nir_cf_node, node, node, &if_stmt->else_list) {
          if (!foreach_cf_node(node, cb, reverse, state))
             return false;
       }
@@ -1766,12 +1768,12 @@ static inline bool
 foreach_loop(nir_loop *loop, nir_foreach_block_cb cb, bool reverse, void *state)
 {
    if (reverse) {
-      foreach_list_typed_reverse(nir_cf_node, node, node, &loop->body) {
+      foreach_list_typed_safe_reverse(nir_cf_node, node, node, &loop->body) {
          if (!foreach_cf_node(node, cb, reverse, state))
             return false;
       }
    } else {
-      foreach_list_typed(nir_cf_node, node, node, &loop->body) {
+      foreach_list_typed_safe(nir_cf_node, node, node, &loop->body) {
          if (!foreach_cf_node(node, cb, reverse, state))
             return false;
       }
@@ -1804,7 +1806,7 @@ foreach_cf_node(nir_cf_node *node, nir_foreach_block_cb cb,
 bool
 nir_foreach_block(nir_function_impl *impl, nir_foreach_block_cb cb, void *state)
 {
-   foreach_list_typed(nir_cf_node, node, node, &impl->body) {
+   foreach_list_typed_safe(nir_cf_node, node, node, &impl->body) {
       if (!foreach_cf_node(node, cb, false, state))
          return false;
    }
@@ -1819,7 +1821,7 @@ nir_foreach_block_reverse(nir_function_impl *impl, nir_foreach_block_cb cb,
    if (!cb(impl->end_block, state))
       return false;
 
-   foreach_list_typed_reverse(nir_cf_node, node, node, &impl->body) {
+   foreach_list_typed_safe_reverse(nir_cf_node, node, node, &impl->body) {
       if (!foreach_cf_node(node, cb, true, state))
          return false;
    }