Check if the base ends up with no variable, and continue
if we see that case outside the loop.
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
/* Walk the deref chain back to the base and look for indirects */
bool has_indirect = false;
nir_deref_instr *base = deref;
- while (base->deref_type != nir_deref_type_var) {
+ while (base && base->deref_type != nir_deref_type_var) {
if (base->deref_type == nir_deref_type_array &&
!nir_src_is_const(base->arr.index))
has_indirect = true;
base = nir_deref_instr_parent(base);
}
- if (!has_indirect)
+ if (!has_indirect || !base)
continue;
/* Only lower variables whose mode is in the mask, or compact