Giovanni Mascellani (@giomasce) commented about libs/vkd3d-shader/dxil.c:
vkd3d_shader_parser_error(&sm6->p, VKD3D_SHADER_ERROR_DXIL_INVALID_OPERAND,
"Failed to get the element type of a constexpr GEP.");
return VKD3D_ERROR_INVALID_SHADER;
- }
- if (!(dst->type = sm6_type_get_pointer_to_type(gep_type, ptr_type->u.pointer.addr_space, sm6)))
- {
WARN("Failed to get pointer type for type %u.\n", gep_type->class);
vkd3d_shader_parser_error(&sm6->p, VKD3D_SHADER_ERROR_DXIL_INVALID_MODULE,
"Module does not define a pointer type for a constexpr GEP result.");
return VKD3D_ERROR_INVALID_SHADER;
- }
- dst->u.reg = operands[0]->u.reg;
- dst->u.reg.idx[1].offset = offset;
- dst->u.reg.idx[1].is_in_bounds = record->code == CST_CODE_CE_INBOUNDS_GEP;
- dst->u.reg.idx_count = 2;
For the "regular" GEP you ensure that the base pointer doesn't already have two indices. Wouldn't the same check make sense here?