From c2ff59e80b2c877c3274f72b5b0a993efe4db7db Mon Sep 17 00:00:00 2001 From: Giovanni Mascellani Date: Tue, 2 Dec 2025 15:07:25 +0100 Subject: [PATCH] vkd3d-shader/dxil: Allocate instructions directly in sm6_parser_emit_br(). --- libs/vkd3d-shader/dxil.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/libs/vkd3d-shader/dxil.c b/libs/vkd3d-shader/dxil.c index 3c8747322..d86494489 100644 --- a/libs/vkd3d-shader/dxil.c +++ b/libs/vkd3d-shader/dxil.c @@ -4943,10 +4943,10 @@ static bool sm6_function_validate_block_index(const struct sm6_function *functio static void sm6_parser_emit_br(struct sm6_parser *dxil, struct function_emission_state *state) { - struct vkd3d_shader_instruction *ins = state->ins; const struct dxil_record *record = state->record; struct sm6_function *function = state->function; struct vkd3d_shader_src_param *src_params; + struct vkd3d_shader_instruction *ins; const struct sm6_value *value; unsigned int i = 2; @@ -4962,6 +4962,11 @@ static void sm6_parser_emit_br(struct sm6_parser *dxil, struct function_emission if (!sm6_function_validate_block_index(function, record->operands[0], dxil)) return; + if (!(ins = sm6_parser_add_function_instruction(dxil, state))) + return; + + state->pushed_instruction = true; + vsir_instruction_init(ins, &dxil->p.location, VSIR_OP_BRANCH); if (!(src_params = instruction_src_params_alloc(ins, 1, dxil))) { @@ -4988,6 +4993,11 @@ static void sm6_parser_emit_br(struct sm6_parser *dxil, struct function_emission || !sm6_function_validate_block_index(function, record->operands[1], dxil)) return; + if (!(ins = sm6_parser_add_function_instruction(dxil, state))) + return; + + state->pushed_instruction = true; + vsir_instruction_init(ins, &dxil->p.location, VSIR_OP_BRANCH); if (!(src_params = instruction_src_params_alloc(ins, 3, dxil))) {