From: Connor Abbott Date: Tue, 22 Oct 2019 15:50:07 +0000 (+0200) Subject: nir: Fix non-determinism in lower_global_vars_to_local X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f9fd04aca15fd00889caa666ba38007268e67f5c;p=mesa.git nir: Fix non-determinism in lower_global_vars_to_local Using a hash-table walk means that variables will get inserted in different orders on different runs. Just walk the list of globals instead, even if some of them can't be turned into locals. Reviewed-by: Kristian H. Kristensen Reviewed-by: Eric Anholt --- diff --git a/src/compiler/nir/nir_lower_global_vars_to_local.c b/src/compiler/nir/nir_lower_global_vars_to_local.c index 4df87aba366..9efc511bcad 100644 --- a/src/compiler/nir/nir_lower_global_vars_to_local.c +++ b/src/compiler/nir/nir_lower_global_vars_to_local.c @@ -83,8 +83,11 @@ nir_lower_global_vars_to_local(nir_shader *shader) } } - hash_table_foreach(var_func_table, entry) { - nir_variable *var = (void *)entry->key; + nir_foreach_variable_safe(var, &shader->globals) { + struct hash_entry *entry = _mesa_hash_table_search(var_func_table, var); + if (!entry) + continue; + nir_function_impl *impl = entry->data; assert(var->data.mode == nir_var_shader_temp);