[PATCH vkd3d v2 2/9] vkd3d-shader/hlsl: Check types when folding constants.
Giovanni Mascellani
gmascellani at codeweavers.com
Mon Mar 28 03:59:07 CDT 2022
Signed-off-by: Giovanni Mascellani <gmascellani at codeweavers.com>
---
v2:
* New
---
libs/vkd3d-shader/hlsl_constant_ops.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/libs/vkd3d-shader/hlsl_constant_ops.c b/libs/vkd3d-shader/hlsl_constant_ops.c
index 109fc2ee..e4e60310 100644
--- a/libs/vkd3d-shader/hlsl_constant_ops.c
+++ b/libs/vkd3d-shader/hlsl_constant_ops.c
@@ -236,10 +236,17 @@ bool hlsl_fold_constants(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr, void
return false;
expr = hlsl_ir_expr(instr);
+ if (instr->data_type->type > HLSL_CLASS_VECTOR)
+ return false;
+
for (i = 0; i < ARRAY_SIZE(expr->operands); ++i)
{
- if (expr->operands[i].node && expr->operands[i].node->type != HLSL_IR_CONSTANT)
- return false;
+ if (expr->operands[i].node)
+ {
+ if (expr->operands[i].node->type != HLSL_IR_CONSTANT)
+ return false;
+ assert(expr->operands[i].node->data_type->type <= HLSL_CLASS_VECTOR);
+ }
}
arg1 = hlsl_ir_constant(expr->operands[0].node);
if (expr->operands[1].node)
--
2.35.1
More information about the wine-devel
mailing list