nir: Fix clone of nir_variable state slots
When num_state_slots is 0, don't create the array. This was
triggering the following assert when running vkcube with
NIR_TEST_CLONE=1
vkcube: ../src/compiler/nir/nir_split_per_member_structs.c:66:
split_variable: Assertion `var->state_slots == NULL' failed.
Fixes: 9fbd390dd4
"nir: Add support for cloning shaders"
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
12bf7cfecf
commit
005cc9ae37
|
@ -151,9 +151,11 @@ nir_variable_clone(const nir_variable *var, nir_shader *shader)
|
|||
nvar->name = ralloc_strdup(nvar, var->name);
|
||||
nvar->data = var->data;
|
||||
nvar->num_state_slots = var->num_state_slots;
|
||||
nvar->state_slots = ralloc_array(nvar, nir_state_slot, var->num_state_slots);
|
||||
memcpy(nvar->state_slots, var->state_slots,
|
||||
var->num_state_slots * sizeof(nir_state_slot));
|
||||
if (var->num_state_slots) {
|
||||
nvar->state_slots = ralloc_array(nvar, nir_state_slot, var->num_state_slots);
|
||||
memcpy(nvar->state_slots, var->state_slots,
|
||||
var->num_state_slots * sizeof(nir_state_slot));
|
||||
}
|
||||
if (var->constant_initializer) {
|
||||
nvar->constant_initializer =
|
||||
nir_constant_clone(var->constant_initializer, nvar);
|
||||
|
|
Loading…
Reference in New Issue