From 72071fcf085b7be42922dd787c974b22d8bc6686 Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Tue, 16 Sep 2025 18:10:01 +0200 Subject: [PATCH] vkd3d-shader/ir: Avoid memset() in vsir_instruction_init(). Primarily to avoid -Warray-bounds warnings from newer gcc, specifically for the first vsir_instruction_init() call in vsir_update_dcl_temps(). This seems to be a false positive created by the interaction between vsir_program_iterator_insert_after() and vsir_program_iterator_next() error handling; it may be possible to avoid that by rearranging things, but it doesn't seem worth it. --- libs/vkd3d-shader/ir.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/libs/vkd3d-shader/ir.c b/libs/vkd3d-shader/ir.c index bf9d567c4..392a68db8 100644 --- a/libs/vkd3d-shader/ir.c +++ b/libs/vkd3d-shader/ir.c @@ -1017,16 +1017,15 @@ static void dst_param_init_output(struct vkd3d_shader_dst_param *dst, dst->write_mask = write_mask; } -void vsir_instruction_init(struct vkd3d_shader_instruction *ins, const struct vkd3d_shader_location *location, - enum vkd3d_shader_opcode opcode) +void vsir_instruction_init(struct vkd3d_shader_instruction *ins, + const struct vkd3d_shader_location *location, enum vkd3d_shader_opcode opcode) { - memset(ins, 0, sizeof(*ins)); - ins->location = *location; - ins->opcode = opcode; - ins->resource_data_type[0] = VSIR_DATA_F32; - ins->resource_data_type[1] = VSIR_DATA_F32; - ins->resource_data_type[2] = VSIR_DATA_F32; - ins->resource_data_type[3] = VSIR_DATA_F32; + *ins = (struct vkd3d_shader_instruction) + { + .location = *location, + .opcode = opcode, + .resource_data_type = {VSIR_DATA_F32, VSIR_DATA_F32, VSIR_DATA_F32, VSIR_DATA_F32}, + }; } bool vsir_instruction_init_with_params(struct vsir_program *program,