Module: vkd3d Branch: master Commit: d6ba8b88faeb48ab74a83350f253c89b5eaa9d6a URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/d6ba8b88faeb48ab74a83350f253c8...
Author: Giovanni Mascellani gmascellani@codeweavers.com Date: Fri Mar 15 13:06:27 2024 +0100
vkd3d-shader/ir: Swap selection branches if the if branch is empty.
---
libs/vkd3d-shader/ir.c | 11 +++++++++++ 1 file changed, 11 insertions(+)
diff --git a/libs/vkd3d-shader/ir.c b/libs/vkd3d-shader/ir.c index d972e8e1..5ff54879 100644 --- a/libs/vkd3d-shader/ir.c +++ b/libs/vkd3d-shader/ir.c @@ -4268,6 +4268,17 @@ static enum vkd3d_result vsir_cfg_move_breaks_out_of_selections(struct vsir_cfg --cfg->loop_intervals[else_target].target_count; }
+ /* If a branch becomes empty, make it the else branch, so we save a block. */ + if (selection->u.selection.if_body.count == 0) + { + struct vsir_cfg_structure_list tmp; + + selection->u.selection.invert_condition = !selection->u.selection.invert_condition; + tmp = selection->u.selection.if_body; + selection->u.selection.if_body = selection->u.selection.else_body; + selection->u.selection.else_body = tmp; + } + return VKD3D_OK; }