From: Jason Ekstrand Date: Fri, 10 Jul 2020 21:09:27 +0000 (-0500) Subject: spirv: Skip phis in unreachable blocks in the second phi pass X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=81773b4b441fbd8ec284de78e4dfdcecdca112dc;p=mesa.git spirv: Skip phis in unreachable blocks in the second phi pass Closes: #3253 Fixes: 22fdb2f8551 "nir/spirv: Update to the latest revision" Reviewed-by: Caio Marcelo de Oliveira Filho Part-of: --- diff --git a/src/compiler/spirv/vtn_cfg.c b/src/compiler/spirv/vtn_cfg.c index 395a5775606..a31047b18b1 100644 --- a/src/compiler/spirv/vtn_cfg.c +++ b/src/compiler/spirv/vtn_cfg.c @@ -1003,7 +1003,14 @@ vtn_handle_phi_second_pass(struct vtn_builder *b, SpvOp opcode, return true; struct hash_entry *phi_entry = _mesa_hash_table_search(b->phi_table, w); - vtn_assert(phi_entry); + + /* It's possible that this phi is in an unreachable block in which case it + * may never have been emitted and therefore may not be in the hash table. + * In this case, there's no var for it and it's safe to just bail. + */ + if (phi_entry == NULL) + return true; + nir_variable *phi_var = phi_entry->data; for (unsigned i = 3; i < count; i += 2) {