mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-03 00:00:25 +01:00
nir/opt_remove_phis: handle phis with no sources
This can happen with loops with unreachable exits which are later
optimized away.
Fixes assertion in dEQP-VK.graphicsfuzz.unreachable-loops with RADV.
Cc: mesa-stable@lists.freedesktop.org
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
(cherry picked from commit 12372d60ff)
This commit is contained in:
parent
b29682c290
commit
f4faf5cbd7
1 changed files with 6 additions and 5 deletions
|
|
@ -109,12 +109,13 @@ remove_phis_block(nir_block *block, nir_builder *b)
|
|||
if (!srcs_same)
|
||||
continue;
|
||||
|
||||
/* We must have found at least one definition, since there must be at
|
||||
* least one forward edge.
|
||||
*/
|
||||
assert(def != NULL);
|
||||
if (!def) {
|
||||
/* In this case, the phi had no sources. So turn it into an undef. */
|
||||
|
||||
if (mov) {
|
||||
b->cursor = nir_after_phis(block);
|
||||
def = nir_ssa_undef(b, phi->dest.ssa.num_components,
|
||||
phi->dest.ssa.bit_size);
|
||||
} else if (mov) {
|
||||
/* If the sources were all movs from the same source with the same
|
||||
* swizzle, then we can't just pick a random move because it may not
|
||||
* dominate the phi node. Instead, we need to emit our own move after
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue