nir/remove_dead_variables: Properly handle deref casts
We already detect any incomplete deref chains (where the deref is used for something other than another deref or a load/store) and flag the variable as used thanks to deref_used_for_not_store. All that's left to do is to properly skip casts when cleaning up. Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
This commit is contained in:
parent
78d80f7db2
commit
7e85480a67
|
@ -103,6 +103,9 @@ remove_dead_var_writes(nir_shader *shader, struct set *live)
|
|||
switch (instr->type) {
|
||||
case nir_instr_type_deref: {
|
||||
nir_deref_instr *deref = nir_instr_as_deref(instr);
|
||||
if (deref->deref_type == nir_deref_type_cast &&
|
||||
!nir_deref_instr_parent(deref))
|
||||
continue;
|
||||
|
||||
nir_variable_mode parent_mode;
|
||||
if (deref->deref_type == nir_deref_type_var)
|
||||
|
|
Loading…
Reference in New Issue