diff --git a/src/compiler/nir/nir_lower_indirect_derefs.c b/src/compiler/nir/nir_lower_indirect_derefs.c index 897a0620872..adcfaec219f 100644 --- a/src/compiler/nir/nir_lower_indirect_derefs.c +++ b/src/compiler/nir/nir_lower_indirect_derefs.c @@ -135,7 +135,7 @@ lower_indirect_derefs_block(nir_block *block, nir_builder *b, /* 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; @@ -143,7 +143,7 @@ lower_indirect_derefs_block(nir_block *block, nir_builder *b, 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