nir: lower_non_uniform_access: iterate over instructions safely
authorLionel Landwerlin <lionel.g.landwerlin@intel.com>
Wed, 15 May 2019 22:02:51 +0000 (23:02 +0100)
committerLionel Landwerlin <lionel.g.landwerlin@intel.com>
Thu, 16 May 2019 09:22:01 +0000 (10:22 +0100)
This pass moves instructions around and adds control-flow in the
middle of blocks. We need to use nir_foreach_instr_safe to ensure that
we iterate over instructions correctly anyway.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: 3bd545764151 ("nir: Add a lowering pass for non-uniform resource access")
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/compiler/nir/nir_lower_non_uniform_access.c

index b2bdb4dd412ba2cdc396065db5c6907906873862..6367f5670e8009dc676edde09cb82ec51c30dee9 100644 (file)
@@ -130,7 +130,7 @@ nir_lower_non_uniform_access_impl(nir_function_impl *impl,
    nir_builder_init(&b, impl);
 
    nir_foreach_block(block, impl) {
-      nir_foreach_instr(instr, block) {
+      nir_foreach_instr_safe(instr, block) {
          switch (instr->type) {
          case nir_instr_type_tex: {
             nir_tex_instr *tex = nir_instr_as_tex(instr);