From 81773b4b441fbd8ec284de78e4dfdcecdca112dc Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Fri, 10 Jul 2020 16:09:27 -0500 Subject: [PATCH] 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: --- src/compiler/spirv/vtn_cfg.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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) {