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.
-- https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/450#note_52521