Giovanni Mascellani (@giomasce) commented about libs/vkd3d-shader/ir.c:
- for (i = 0; i < instructions->count; ++i)
- {
unsigned int loop_header_block_id, loop_body_block_id, continue_block_id, merge_block_id, true_block_id;
const struct vkd3d_shader_instruction *instruction = &instructions->elements[i];
const struct vkd3d_shader_src_param *src = instruction->src;
struct cf_flattener_info *cf_info;
flattener->location = instruction->location;
cf_info = flattener->control_flow_depth
? &flattener->control_flow_info[flattener->control_flow_depth - 1] : NULL;
switch (instruction->handler_idx)
{
case VKD3DSIH_IF:
I recently noticed that there is also `VKD3DSIH_IFC` that introduces `if` blocks. This was already ignored in the SPIR-V backend before this commit, as well as in `remove_dead_code()` and even in the diassembler (as far as indentation is concerned). So I don't think it's on you to handle it, but maybe that's an oversight that should be eventually fixed.