diff --git a/src/compiler/nir/nir_remove_dead_variables.c b/src/compiler/nir/nir_remove_dead_variables.c index 01ea18cc37e..deaadf41d66 100644 --- a/src/compiler/nir/nir_remove_dead_variables.c +++ b/src/compiler/nir/nir_remove_dead_variables.c @@ -93,7 +93,7 @@ add_var_use_shader(nir_shader *shader, struct set *live, nir_variable_mode modes } static void -remove_dead_var_writes(nir_shader *shader, struct set *live) +remove_dead_var_writes(nir_shader *shader) { nir_foreach_function(function, shader) { if (!function->impl) @@ -193,12 +193,14 @@ nir_remove_dead_variables(nir_shader *shader, nir_variable_mode modes, } } + _mesa_set_destroy(live, NULL); + nir_foreach_function(function, shader) { if (!function->impl) continue; if (progress) { - remove_dead_var_writes(shader, live); + remove_dead_var_writes(shader); nir_metadata_preserve(function->impl, nir_metadata_block_index | nir_metadata_dominance); } else { @@ -206,6 +208,5 @@ nir_remove_dead_variables(nir_shader *shader, nir_variable_mode modes, } } - _mesa_set_destroy(live, NULL); return progress; }