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>
diff --git a/src/compiler/nir/nir_split_vars.c b/src/compiler/nir/nir_split_vars.c
index 6aee310..3a45130 100644
--- a/src/compiler/nir/nir_split_vars.c
+++ b/src/compiler/nir/nir_split_vars.c
@@ -232,6 +232,14 @@
             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)