nir/vtn: fix emitting code after loops
authorConnor Abbott <cwabbott0@gmail.com>
Mon, 22 Jun 2015 20:53:08 +0000 (13:53 -0700)
committerConnor Abbott <cwabbott0@gmail.com>
Mon, 22 Jun 2015 20:53:08 +0000 (13:53 -0700)
When we're done emitting the code for a loop, we need to visit the new
break block, which is the merge block of the current loop, rather than
the old merge block, which is the merge block of the loop containing the
one we just emitted code for.

src/glsl/nir/spirv_to_nir.c

index e0f280ceaae75ab6ae70b39792d6f2c9a89ca89a..4aabf3cc4e0c3ec87c6ce16062f908373b3e4175 100644 (file)
@@ -2095,7 +2095,7 @@ vtn_walk_blocks(struct vtn_builder *b, struct vtn_block *start,
          vtn_walk_blocks(b, block, new_break_block, new_cont_block, NULL);
 
          nir_builder_insert_after_cf_list(&b->nb, old_list);
-         block = break_block;
+         block = new_break_block;
          continue;
       }