diff options
Diffstat (limited to 'src/compiler/spirv/vtn_cfg.c')
-rw-r--r-- | src/compiler/spirv/vtn_cfg.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/compiler/spirv/vtn_cfg.c b/src/compiler/spirv/vtn_cfg.c index 1c8c4f8e108..62b9056990e 100644 --- a/src/compiler/spirv/vtn_cfg.c +++ b/src/compiler/spirv/vtn_cfg.c @@ -531,7 +531,7 @@ vtn_handle_phi_second_pass(struct vtn_builder *b, SpvOp opcode, struct vtn_block *pred = vtn_value(b, w[i + 1], vtn_value_type_block)->block; - b->nb.cursor = nir_after_block_before_jump(pred->end_block); + b->nb.cursor = nir_after_instr(&pred->end_nop->instr); vtn_local_store(b, src, nir_deref_var_create(b, phi_var)); } @@ -589,7 +589,9 @@ vtn_emit_cf_list(struct vtn_builder *b, struct list_head *cf_list, vtn_foreach_instruction(b, block_start, block_end, handler); - block->end_block = nir_cursor_current_block(b->nb.cursor); + block->end_nop = nir_intrinsic_instr_create(b->nb.shader, + nir_intrinsic_nop); + nir_builder_instr_insert(&b->nb, &block->end_nop->instr); if ((*block->branch & SpvOpCodeMask) == SpvOpReturnValue) { struct vtn_ssa_value *src = vtn_ssa_value(b, block->branch[1]); |