nir/dead_write_vars: Get modes directly from derefs
authorJason Ekstrand <jason.ekstrand@intel.com>
Thu, 13 Dec 2018 22:30:24 +0000 (16:30 -0600)
committerJason Ekstrand <jason.ekstrand@intel.com>
Tue, 18 Dec 2018 19:13:28 +0000 (13:13 -0600)
Instead of going all the way back to the variable, just look at the
deref.  The modes are guaranteed to be the same by nir_validate whenever
the variable can be found.  This fixes clear_unused_for_modes for
derefs that don't have an accessible variable.

Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
src/compiler/nir/nir_opt_dead_write_vars.c

index dd949998cc8c6f5e7a0a9be2ed8fe29bece536bd..75814738d8445e5407b5ea3062ef43b413d9f274 100644 (file)
@@ -56,8 +56,7 @@ static void
 clear_unused_for_modes(struct util_dynarray *unused_writes, nir_variable_mode modes)
 {
    util_dynarray_foreach_reverse(unused_writes, struct write_entry, entry) {
-      nir_variable *var = nir_deref_instr_get_variable(entry->dst);
-      if (var->data.mode & modes)
+      if (entry->dst->mode & modes)
          *entry = util_dynarray_pop(unused_writes, struct write_entry);
    }
 }