nir: Handle incomplete derefs in split_struct_vars

In split_var_list_structs where we initalize the splitting, we already
use get_complex_used_vars to avoid splitting any variables that have a
complex use.  However, we weren't actually handling the complex uses
properly in the case where we can't actually find the variable.

Fixes: f1cb3348f1 "nir/split_vars: Properly bail in the presence of ..."
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6332>
This commit is contained in:
Jason Ekstrand 2020-09-29 10:30:52 -05:00 committed by Marge Bot
parent 6b72004f12
commit 5664713d7b

View file

@ -232,6 +232,14 @@ split_struct_derefs_impl(nir_function_impl *impl,
continue;
nir_variable *base_var = nir_deref_instr_get_variable(deref);
/* If we can't chase back to the variable, then we're a complex use.
* This should have been detected by get_complex_used_vars() and the
* variable should not have been split. However, we have no way of
* knowing that here, so we just have to trust it.
*/
if (base_var == NULL)
continue;
struct hash_entry *entry =
_mesa_hash_table_search(var_field_map, base_var);
if (!entry)