[PATCH vkd3d v7 5/6] vkd3d-shader/hlsl: Handle conditionals in copy propagation.
Zebediah Figura (she/her)
zfigura at codeweavers.com
Wed Nov 17 22:18:30 CST 2021
On 11/17/21 22:09, Zebediah Figura (she/her) wrote:
>> +static bool copy_propagation_duplicate(struct hlsl_ctx *ctx, struct
>> copy_propagation_state *state)
>> +{
>> + struct copy_propagation_variable *var;
>> +
>> + if (!hlsl_array_reserve(ctx, (void**)&state->variables,
>> &state->capacity, state->depth + 2, sizeof(*state->variables)))
>
> "state->depth + 2" looks wrong; is it?
Wait, never mind, I see why this looks wrong. The fact that "depth" is
1-biased seems confusing to me, though...
>
>> + return false;
>> + ++state->depth;
>> +
>> + rb_init(&state->variables[state->depth],
>> copy_propagation_variable_compare);
>> +
>> + RB_FOR_EACH_ENTRY(var, &state->variables[state->depth - 1],
>> struct copy_propagation_variable, entry)
>> + {
>> + struct copy_propagation_variable *new_var =
>> copy_propagation_create_variable(ctx, state, var->var);
>> +
>> + if (!new_var)
>> + return false;
>> +
>> + memcpy(new_var->values, var->values, sizeof(*var->values) *
>> var->var->data_type->reg_size);
>> + }
>> +
>> + return true;
>> +}
>> +
>
More information about the wine-devel
mailing list