From: Giovanni Mascellani gmascellani@codeweavers.com
--- libs/vkd3d-shader/ir.c | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-)
diff --git a/libs/vkd3d-shader/ir.c b/libs/vkd3d-shader/ir.c index 9c47588c3..0b33936d3 100644 --- a/libs/vkd3d-shader/ir.c +++ b/libs/vkd3d-shader/ir.c @@ -4769,6 +4769,24 @@ done: return VKD3D_OK; }
+static enum vkd3d_result vsir_program_materialize_undominated_ssas_to_temps(struct vsir_program *program, + struct vkd3d_shader_message_context *message_context) +{ + enum vkd3d_result result; + struct vsir_cfg cfg; + + if ((result = vsir_cfg_init(&cfg, program, message_context)) < 0) + return result; + + vsir_cfg_compute_dominators(&cfg); + + result = vsir_cfg_materialize_undominated_ssas_to_temps(&cfg); + + vsir_cfg_cleanup(&cfg); + + return result; +} + struct validation_context { struct vkd3d_shader_message_context *message_context; @@ -5646,8 +5664,6 @@ enum vkd3d_result vsir_program_normalise(struct vsir_program *program, uint64_t
if (program->shader_version.major >= 6) { - struct vsir_cfg cfg; - if ((result = vsir_program_materialise_phi_ssas_to_temps(program)) < 0) return result;
@@ -5660,15 +5676,7 @@ enum vkd3d_result vsir_program_normalise(struct vsir_program *program, uint64_t if ((result = vsir_program_flatten_control_flow_constructs(program, message_context)) < 0) return result;
- if ((result = vsir_cfg_init(&cfg, program, message_context)) < 0) - return result; - vsir_cfg_compute_dominators(&cfg); - - result = vsir_cfg_materialize_undominated_ssas_to_temps(&cfg); - - vsir_cfg_cleanup(&cfg); - - if (result < 0) + if ((result = vsir_program_materialize_undominated_ssas_to_temps(program, message_context)) < 0) return result; } else