diff options
author | Jason Ekstrand <[email protected]> | 2020-07-10 16:09:27 -0500 |
---|---|---|
committer | Marge Bot <[email protected]> | 2020-07-12 00:02:45 +0000 |
commit | 81773b4b441fbd8ec284de78e4dfdcecdca112dc (patch) | |
tree | bbada7d4522dcce6c7ee94b42bc9b3b9b528caca /src/compiler/spirv | |
parent | e086f64d3936f496acf41c8b2aa276f09eed6a62 (diff) |
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 <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5855>
Diffstat (limited to 'src/compiler/spirv')
-rw-r--r-- | src/compiler/spirv/vtn_cfg.c | 9 |
1 files changed, 8 insertions, 1 deletions
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) { |