}
}
-static bool
-add_var_use_block(nir_block *block, void *state)
-{
- struct set *live = state;
-
- nir_foreach_instr(block, instr) {
- switch(instr->type) {
- case nir_instr_type_intrinsic:
- add_var_use_intrinsic(nir_instr_as_intrinsic(instr), live);
- break;
-
- case nir_instr_type_call:
- add_var_use_call(nir_instr_as_call(instr), live);
- break;
-
- case nir_instr_type_tex:
- add_var_use_tex(nir_instr_as_tex(instr), live);
- break;
-
- default:
- break;
- }
- }
-
- return true;
-}
-
static void
add_var_use_shader(nir_shader *shader, struct set *live)
{
- nir_foreach_function(shader, function) {
+ nir_foreach_function(function, shader) {
if (function->impl) {
- nir_foreach_block(function->impl, add_var_use_block, live);
+ nir_foreach_block(block, function->impl) {
+ nir_foreach_instr(instr, block) {
+ switch(instr->type) {
+ case nir_instr_type_intrinsic:
+ add_var_use_intrinsic(nir_instr_as_intrinsic(instr), live);
+ break;
+
+ case nir_instr_type_call:
+ add_var_use_call(nir_instr_as_call(instr), live);
+ break;
+
+ case nir_instr_type_tex:
+ add_var_use_tex(nir_instr_as_tex(instr), live);
+ break;
+
+ default:
+ break;
+ }
+ }
+ }
}
}
}
progress = remove_dead_vars(&shader->system_values, live) || progress;
if (modes & nir_var_local) {
- nir_foreach_function(shader, function) {
+ nir_foreach_function(function, shader) {
if (function->impl) {
if (remove_dead_vars(&function->impl->locals, live)) {
nir_metadata_preserve(function->impl, nir_metadata_block_index |