From e94891fa3099ebd0c2e03285283f82991ea1ae20 Mon Sep 17 00:00:00 2001 From: antonino Date: Thu, 10 Aug 2023 17:52:14 +0200 Subject: [PATCH] zink: fix crash in in `replicate_derefs` Only call `nir_src_as_deref` when needed to avoid crashes. --- src/gallium/drivers/zink/zink_compiler.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c index 7e79e6df30a..07b0fd0e401 100644 --- a/src/gallium/drivers/zink/zink_compiler.c +++ b/src/gallium/drivers/zink/zink_compiler.c @@ -315,15 +315,15 @@ lower_pv_mode_gs_ring_index(nir_builder *b, static nir_deref_instr* replicate_derefs(nir_builder *b, nir_deref_instr *old, nir_deref_instr *new) { - nir_deref_instr *parent = nir_deref_instr_parent(old); - if (!parent) - return new; + nir_deref_instr *parent; switch(old->deref_type) { case nir_deref_type_var: return new; case nir_deref_type_array: + parent = nir_deref_instr_parent(old); return nir_build_deref_array(b, replicate_derefs(b, parent, new), old->arr.index.ssa); case nir_deref_type_struct: + parent = nir_deref_instr_parent(old); return nir_build_deref_struct(b, replicate_derefs(b, parent, new), old->strct.index); case nir_deref_type_array_wildcard: case nir_deref_type_ptr_as_array: