Module: Mesa Branch: master Commit: c8a35285f0c8bef8ae70e2eb6d63b3c5cd44f499 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c8a35285f0c8bef8ae70e2eb6d63b3c5cd44f499
Author: Dave Airlie <[email protected]> Date: Mon Nov 19 13:54:33 2018 +1000 nir: handle shared pointers in lowering indirect derefs. Check if the base ends up with no variable, and continue if we see that case outside the loop. Reviewed-by: Jason Ekstrand <[email protected]> --- src/compiler/nir/nir_lower_indirect_derefs.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/compiler/nir/nir_lower_indirect_derefs.c b/src/compiler/nir/nir_lower_indirect_derefs.c index 897a062087..adcfaec219 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 _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
