vkd3d-shader/spirv: Ignore break instructions outside active blocks.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Philip Rebohle 2021-11-08 14:50:19 +01:00 committed by Alexandre Julliard
parent a1df197561
commit 45ccf85ae6

View File

@ -7802,8 +7802,10 @@ static int vkd3d_dxbc_compiler_emit_control_flow_instruction(struct vkd3d_dxbc_c
}
else if (breakable_cf_info->current_block == VKD3D_BLOCK_SWITCH)
{
assert(breakable_cf_info->inside_block);
vkd3d_spirv_build_op_branch(builder, breakable_cf_info->u.switch_.merge_block_id);
/* The current case block may have already been ended by an
* unconditional continue instruction. */
if (breakable_cf_info->inside_block)
vkd3d_spirv_build_op_branch(builder, breakable_cf_info->u.switch_.merge_block_id);
}
cf_info->inside_block = false;